这是针对AIX上DB2 9.7 Enterprise Server Edition。

在性能环境中,我在实例中对几个数据库进行了完整的离线备份。

我想将这些数据库还原为我们的集成环境。

我运行了命令

db2 restore database database_name from 
/bkp/instance_name/OfflineBackups/RestorePoint/my_restore_point 
taken at 20120321103846 into database_name without prompting;

对于我的每个数据库(当然,适当地修改数据库名称和时间戳)。

每个数据库根据DB2成功恢复。但是,现在我希望检查数据库是否确实还原了我的想法时,我尝试连接到数据库,并得到错误

    SQL1117N  A connection to or activation of database "database_name" cannot be made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019

我在上一个数据库中没有任何过程交易,因为所有连接都被迫关闭,并且数据库已下线备份。我该怎么办?

有帮助吗?

解决方案

找到答案 这里.

我需要运行命令

db2 rollforward db database_name to end of backup and complete;

这将所有内容都投入到日志上,并将数据库置于不再等待的状态,从而允许与该数据库进行连接。我需要为每个数据库恢复执行此操作。

编辑: 在参加时发现了这个漂亮的掘金 db2nightshow 插曲。使用9.7 FP2,他们引入了一个名为DB2_RESTORE_GRANT_ADMIN_AUTHORITY的注册表变量。如果您要恢复一个实例到另一个实例的备份,这很方便,因为它自动授予实例所有者SECADM,DBADM,DATAACCESS和AccessCtrl在数据库中还原。使用9.7 FP5,设置是动态的,不需要弹跳实例。我意识到我最初的问题与安全无关,但是可以遇到,并认为这将是一个方便的花絮。


编辑#2: 我最近发现,如果备份是基于档案记录数据库的脱机备份,则可以包括该条款 WITHOUT ROLLING FORWARD 在我的 RESTORE 命令。成功还原后,这将使数据库立即退出前进状态,这意味着我不必必须发行 ROLLFORWARD DB 命令。

其他提示

如果备份类型可能在线备份中。

使用日志路径(“/db2logtarget”)

例如:-db2 => rollforward db userdb到日志结束并完成溢出日志路径(“/home/home/user/target”)

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top