【问题标题】:DB2 - Tablespace access is not allowedDB2 - 不允许访问表空间
【发布时间】:2016-03-03 21:31:09
【问题描述】:

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

【问题讨论】:

  • 什么 DB2 版本?您是否使用自动存储?如果不是,目标和源上的表空间容器路径是否相同?
  • 您是进行完整的数据库还原还是表空间还原?您是否偶然进行了数据“加载”操作?查看更多信息:www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/…
  • 我用的是自动存储,全量恢复,没有数据加载操作,表空间路径不一样。
  • 我应该进行数据加载操作吗?

标签: database db2 database-administration


【解决方案1】:

所以您尝试执行所谓的重定向恢复(在恢复命令中使用了选项重定向)- 对吗?这意味着您有机会在还原期间重新定义路径。

还原主要分为三个部分:

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

在步骤 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

【讨论】:

    【解决方案2】:

    由于您使用的是自动存储,因此您需要重新定义目标中不同的存储组的路径。恐怕我不能说它是如何在 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
    

    如果需要,使用前滚完成此操作。

    【讨论】:

      【解决方案3】:

      按照以下步骤操作:

      1. 找到最后一张备用图片。及其路径

      2. 执行重定向恢复:

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

      4. 运行 .sql 文件

        db2 -tvf redirectRestore.sql
        
      5. 如果需要,执行前滚。

        db2 rollforward db dbname to end of logs
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-28
        • 2020-05-03
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-23
        相关资源
        最近更新 更多