将表格从一个子系统复制到另一个子系统

您可以使用 DSN1COPY 实用工具将表格从一个子系统复制到另一个子系统。 复制这些表时,请确保目标子系统上的对象元数据与源子系统上的对象元数据相匹配。 对象元数据包括列数、列类型、表空间类型和版本信息等项目。

关于本任务

建议 :不要使用 DSN1COPY 将XML表格空间从一个子系统复制到另一个子系统。 XML表格空间中的文档依赖于 Db2 目录表和XML模式存储库数据库(DSNXSR)中的表。 特别是,XML表格空间中的XML文档具有唯一的字符串ID,必须与目录表 SYSIBM.SYSXMLSTRINGS 中的值匹配。 文档可能还有XSR对象ID,必须与XML模式存储库表 SYSIBM.XSROBJECTS 中的值匹配。 如果将XML表空间从一个子系统复制到另一个子系统,则XML文档中的字符串ID和XSR对象ID将不会与目标子系统上 SYSIBM.SYSXMLSTRINGS 或 SYSIBM.XSROBJECTS 中的值匹配。

过程

要将一个子系统中的表空间及其表复制到另一个子系统中:

  1. 更改开始 按照检查缺失的系统页面的步骤 ,检查源系统中的表格空间,并插入缺失的系统页面。
    重要提示: 这一步使表格空间中的表格具有自描述性。 当表格空间具有自描述性时, Db2 无需在目录或目录中搜索表格格式信息,从而降低了将表格复制到目标子系统后出错的可能性。
    更改结束
  2. 如果目标子系统上不存在表空间或表,请创建。

    如果表格中包含身份识别列,请按如下方式指定该列:

    1. 在源子系统上发出SELECT语句,查询与源子系统上表的身份列相对应的 SYSIBM.SYSSEQUENCES 条目。
    2. 将INCREMENT值添加到MAXASSIGNEDVAL值中,以确定身份列的下一个值 (nv )。
    3. 对于目标子系统的表,请将START WITH值指定为 nv
    4. 将目标表上标识列的所有属性与源表上标识列的属性保持一致。
  3. 如果目标子系统上存在表空间或表,请检查目录中的表空间、表和列定义,确保源子系统和目标子系统上的定义相同。
  4. 查询目标子系统中对象的DBID、PSID和OBID。 如果值与源对象不同,请指定DBID、PSID和OBID作为 DSN1COPY 的OBIDXLAT数据集的一部分。
  5. 停止源子系统和目标子系统的表空间。
  6. 运行带有OBIDXLAT和RESET选项的 DSN1COPY 实用程序。 在 SYSXLAT 数据集中,为源子系统到目标子系统的表空间指定表数据库对象标识符(OBID)的正确映射。
  7. 在源和目标子系统上启动表空间,以进行读/写访问。
  8. 在目标子系统的桌面上运行“修复目录测试”,确保目录信息与页面集信息匹配。

    执行下列其中一项操作:

    • 如果“维修目录测试”的返回代码为0,请继续执行下一步。
    • 如果“维修目录测试”的返回代码为4,请运行“维修目录”以修复任何不匹配项。
    • 如果“维修目录测试”以返回代码8结束,请执行步骤 3 ,重新开始复制数据。
    维修目录更新了以下栏目:
    • SYSTABLEPART中的OLDEST_VERSION
    • SYSTABLES中的版本
    • SYSTABLESPACE中的OLDEST_VERSION和CURRENT_VERSION
  9. 如果源子系统表中有定义的索引在目标子系统表中没有定义,请创建这些索引。
  10. 在目标子系统上运行重建索引,重建表中定义的所有索引。