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)
我在以前的数据库中没有任何正在进行的事务,因为所有连接都被强制关闭并且数据库已关闭以进行脱机备份。我该怎么办?
在这里找到了答案。
我需要运行命令
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
命令。