2016-03-03 135 views
0

我试图从另一个数据库(也是DB2)将DB2数据库恢复到备份。恢复似乎运行良好。但是,我收到错误:不允许访问表空间。我检查了表空间的状态,它们被卡在Restore Pending中。我如何让他们处于正确的状态?如果这是不可能的,还有其他建议吗?顺便说一句,我正在Windows环境中工作,并使用Data Studio进行恢复。DB2 - 不允许访问表空间

+0

什么是DB2版本?你在使用自动存储吗?如果没有,目标和源的表空间容器路径是否相同? – mustaccio

+0

你做了完整的数据库还原还是表空间还原?偶然你做了一个数据“加载”操作?查看更多信息:https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.admin.dm.doc/doc/c0051301.html – smoore4

+0

我正在使用自动存储,完全恢复,无数据加载操作,表空间路径不同。 –

回答

0

所以你试图做一个所谓的重定向恢复,因为它似乎(使用恢复命令中的选项重定向) - 对吗?这意味着您有机会在恢复过程中重新定义路径。

还原ist的三个基本部分分裂:

  1. 恢复正在读取数据并停止
  2. 让你重新定义的路径
  3. 恢复将完成写入数据恢复到新的位置

在步骤2中,您将看到表空间在还原启动但尚未完成时处于还原状态。 支持你在步骤2中,我建议使用

restore... redirect generate script <scriptname> 

,这将给你所有可能/必要的命令的脚本。

退房 http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.ha.doc/doc/c0006249.html?lang=en

记住事后检查数据库状态,你可能想/需要做rollfowrds操作为好。

表空间的状态检查出以下网站 http://www.ibm.com/developerworks/data/library/techarticle/dm-0407melnyk/#rp

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 

完成这一关前滚如果需要的话。

相关问题