淑昊柠 发表于 2016-11-17 04:27:46

Db2 restore还原数据库“不能连接或激活数据库”的处理

  在用restore命令还原数据库时,命令行显示还原成功,


C:\Documents and Settings\Administrator>db2 restore database XXX from "D:\DB2"
taken at 20110515133036 on "d:" dbpath on "D:\DB2" into XXX comprlib D:\DB2\
db2compr.dll
SQL1035N  当前正在使用数据库。  SQLSTATE=57019
 
C:\Documents and Settings\Administrator>db2 restore database XXX from "D:\DB2"
taken at 20110515133036 on "d:" dbpath on "D:\DB2" into XXX comprlib D:\DB2\
db2compr.dll
SQL2529W  警告!复原到与备份映像数据库不相同的现有数据库,现有数据库的别名
"YYY" 与备份映像的别名 "XXX" 不匹配,并且现有数据库的数据库名称 "XXX"
与备份映像的数据库名称 "XXX"
不匹配。目标数据库将被备份版本覆盖。将删除与目标数据库相关联的前滚恢复日志。
要继续吗?(y/n) y
DB20000I  RESTORE DATABASE命令成功完成。

用connect命令连接数据库,出现如下错误提示:

  
SQL1117N  由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "XXX"。
SQLSTATE=57019
 
在前滚已经过大于或等于 "2011-05-23-07.06.38.000000 UTC" 的时间点之前,数据库 "XXX"
不能脱离前滚暂挂状态,因为节点 "0" 中包含比指定时间更新的信息。

在网上找资料,用rollforward命令:

 
  参考网址:http://bpmfhu.itpub.net/category/47/124
 
运行后,显示如下提示,操作成功,再次连接数据库,提示成功连接。
 
                                 前滚状态
 
 输入数据库别名                      = XXX
 节点数已返回状态                = 1
 
 节点号                                = 0
 前滚状态                                    = 未暂挂
 下一个要读取的日志文件          =
 已处理的日志文件                =  -
 上次落实的事务                  = 2011-05-23-07.25.15.000000 UTC
 
DB20000I  ROLLFORWARD命令成功完成。

db2 rollforward db XXX stop

补充:如果以上操作还不成功,可执行以下操作:

1.命令:restore db XXX continue

注释:XXX 是源数据库名称,

完成重定向恢复

2.日志需要前滚,需要获得该备份的日志序列文件。

执行命令:rollforward db XXX to end of logs and complete

报错:SQL4970N 由于数据库分区 "0" 上的日志文件丢失或损坏,所以对数据库 "XXX"
执行的前滚恢复操作无法到达指定的停止点(日志末尾或时间点)。前滚恢复操作在处理日
志文件 "S0036188.LOG" 时停止。

从客户环境数据库服务器获取S0036188.LOG

3.查询该还原目标数据库日志文件路径

执行命令:get db cfg for XXX

找到日志文件路径,把第3点获得的日志拷贝到该路径

4.前滚数据库

命令:rollforward db XXX to end of logs and complete

5.还原数据库完成。  
   
页: [1]
查看完整版本: Db2 restore还原数据库“不能连接或激活数据库”的处理