我正在尝试将DB2数据库从另一个数据库(也是DB2)还原到备份。恢复似乎运行正常。但是,我收到错误:不允许表空间访问。我检查了表空间的状态,它们卡在Restore Pending中。如何让它们处于正确的状态?如果那不可能,还有其他建议吗?顺便说一句,我在Windows环境中工作,并使用Data Studio进行还原。
答案 0 :(得分:0)
所以你试图做一个所谓的重定向恢复(在恢复命令中使用重定向选项) - 对吗?这意味着您有机会在恢复期间重新定义路径。
恢复基本上分为三个部分:
在Step2期间,当恢复已开始但尚未完成时,您会看到表空间处于还原暂挂状态。 为了在步骤2中为您提供支持,我建议您使用
restore... redirect generate script <scriptname>
将为您提供包含所有可能/必要命令的脚本。
请记住,之后要检查数据库状态,因为您可能需要/也需要执行rollfowrds操作。
对于表空间状态,请查看以下网站 http://www.ibm.com/developerworks/data/library/techarticle/dm-0407melnyk/#rp
答案 1 :(得分:0)
由于您使用的是自动存储,因此您需要重新定义目标中不同的存储组路径。我担心我不能说它是如何在Data Studio中完成的,但应该有一种方法可以通过GUI实现这一点。
在命令行中,您需要沿着这些方向做一些事情。首先,确定需要重新定义的存储组,例如,通过运行db2pd -d yourdb -storagegroups
。结果看起来与此相似:
Storage Group Configuration:
Address SGID Default DataTag Name
0x00007F239319BB20 0 Yes 0 IBMSTOGROUP
Storage Group Statistics:
Address SGID State Numpaths NumDropPen
0x00007F239319BB20 0 0x00000000 1 0
Storage Group Paths:
Address SGID PathID PathState PathName
0x00007F23931C1000 0 0 InUse /export/db2data
请注意目标系统上存在无效路径的存储组的名称。
现在你可以开始恢复了:
db2 restore db yourdb from <path> redirect
该命令将很快完成。此时,您将能够重新定义存储组:
db2 set stogroup paths for <your_stogroup> on '<new_path>'
完成后,继续恢复:
db2 restore db yourdb continue
如果需要,请使用前滚完成此操作。
答案 2 :(得分:0)
请遵循以下步骤:
查找最后一个备用映像。及其路径
执行重定向还原:
db2 "RESTORE DATABASE dbname FROM /path TAKEN AT timestamp into NEWDBNAME REDIRECT GENERATE SCRIPT redirectRestore.sql"
使用VI编辑器对redirectRestore.sql文件进行更改,更改存储组路径的路径名。
运行.sql文件
db2 -tvf redirectRestore.sql
根据需要执行前滚。
db2 rollforward db dbname to end of logs