恢复脱机备份后无法连接到 DB2 数据库

Chr*_*ich 6 db2 restore db2-luw

这是针对 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;
Run Code Online (Sandbox Code Playgroud)

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

每个数据库都根据 DB2 成功恢复。但是,现在当我想检查数据库是否确实恢复了我的想法时,我尝试连接到数据库,但出现错误

    SQL1117N  A connection to or activation of database "database_name" cannot be made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019
Run Code Online (Sandbox Code Playgroud)

我在以前的数据库中没有任何正在进行的事务,因为所有连接都被强制关闭并且数据库已关闭以进行脱机备份。我该怎么办?

Chr*_*ich 5

这里找到了答案。

我需要运行命令

db2 rollforward db database_name to end of backup and complete;
Run Code Online (Sandbox Code Playgroud)

这会将所有内容提交到日志并将数据库置于不再挂起的状态,从而允许连接到它。我需要为每个恢复的数据库执行此操作。

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


编辑#2:我最近发现,如果备份是基于归档日志数据库的离线备份,我可以WITHOUT ROLLING FORWARD在我的RESTORE命令中包含该子句。这将使数据库在成功恢复后立即脱离前滚暂挂状态,这意味着我不必再发出ROLLFORWARD DB命令。