如何将对NO ENCRYPT DB2选项的更改添加到db2RestoreStruct

ej83mcc0  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(147)

我尝试将加密的数据库还原为未加密的数据库。我通过将piDbEncOpts设置为SQL_ENCRYPT_DB_NO进行了更改,但还原仍然失败。是否有db2示例代码,我可以在其中检查如何在DB2中设置“NO Encrypt”选项。我将添加以下代码片段。
数据库加密选项=数据库加密

v1uwarro

v1uwarro1#

如果使用正确,名为db2Restore的“C”API将把加密的映像恢复到未加密的数据库。
您可以使用IBM示例文件的修改版本:dbrestore.sqc和相关文件,以了解如何执行此操作。
根据您的'C'编译器版本和设置,您可能会从IBM的代码中得到很多警告,因为随着时间的推移,IBM似乎没有维护他们的示例代码。但是,您不需要运行IBM的示例代码,您可以研究它来了解如何修复您自己的C代码。
如果已安装,示例组件必须与您的Db2-server版本+修复包匹配,并且您必须使用Db2-server版本+修复包附带的C include文件来获取相关定义。
对IBM示例代码的修改包括:

  • 使用db2 Restore API时,确保其第一个参数的值与服务器Db2-version-and-fixpack兼容,以便访问所需的功能。如果为第一个参数指定了错误的版本号,例如,Db2的版本不支持此功能,则API将失败。例如,在我的Db2-LUW v11.1.4.6上,我使用了预定义的db2Version1113,如下所示:db2Restore(db2Version1113, &restoreStruct, &sqlca);
  • 设置恢复iOptions字段时:启用标志DB2RESTORE_NOENCRYPT,例如,在IBM的示例中,包括附加标志:restoreStruct.iOptions = DB2RESTORE_OFFLINE | DB2RESTORE_DB | DB2RESTORE_NODATALINK | DB2RESTORE_NOROLLFWD | DB2RESTORE_NOENCRYPT;
  • 请确保restoredDbAlias与加密备份别名不同。

我使用Db2 v11.1.4.6(API中的db2 Version 1113)和gcc 9.3进行了测试。
我还使用gcc 9.3测试了Db2 v11.5(API中的db2 Version 11500)。

相关问题