DB2 - 不允许使用表空间访问

时间:2016-03-03 21:31:10

标签: database db2 database-administration

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

3 个答案:

答案 0 :(得分:0)

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

恢复基本上分为三个部分:

  1. 恢复正在读取数据并停止
  2. 允许您重新定义路径
  3. 还原将完成将数据写入新位置的恢复
  4. 在Step2期间,当恢复已开始但尚未完成时,您会看到表空间处于还原暂挂状态。 为了在步骤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

答案 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)

请遵循以下步骤:

  1. 查找最后一个备用映像。及其路径

  2. 执行重定向还原:

    db2 "RESTORE DATABASE dbname  FROM /path TAKEN AT timestamp into NEWDBNAME REDIRECT GENERATE SCRIPT redirectRestore.sql"
    
  3. 使用VI编辑器对redirectRestore.sql文件进行更改,更改存储组路径的路径名。

  4. 运行.sql文件

    db2 -tvf redirectRestore.sql
    
  5. 根据需要执行前滚。

    db2 rollforward db dbname to end of logs