题
这是针对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”)