【问题标题】:Proper method to migrate DB2 materialized query tables (MQTs) using db2move and db2look使用 db2move 和 db2look 迁移 DB2 物化查询表 (MQT) 的正确方法
【发布时间】:2014-02-15 16:08:37
【问题描述】:

我正在将数据库从用于 Windows x86_64 的 DB2 10.1 迁移到用于 Linux x86_64 的 DB2 10.1 - 这是具有不兼容备份文件格式的操作系统和机器类型的组合,这意味着我不能只进行备份和恢复。

相反,我使用db2move 从 Windows 备份数据库并在 Linux 上恢复它。但是,db2move 不会移动具体化查询表 (MQT)。相反,我需要使用db2look。这带来了寻找通用方法来处理该过程的挑战。现在要转储具体化查询的 DDL,我必须运行以下命令:

db2 connect to MYDATABASE
db2 -x "select cast(tabschema || '.' || tabname as varchar(80)) as tablename from syscat.tables where type='S'"

这会返回一个 MQT 列表,例如:

MYSCHEMA.TABLE1
MYSCHEMA.TABLE2
MYOTHERSCHEMA.TABLE3

然后我可以获取所有这些值并将它们输入到 db2look 以生成每个表的 DDL 并将输出发送到 mqts.sql

db2look -d MYDATABASE -e -t MYSCHEMA.TABLE1 MYSCHEMA.TABLE2 MYOTHERSCHEMA.TABLE3 -o mqts.sql

然后我将文件mqts.sql复制到我之前已经恢复所有非MQT的目标计算机,并运行以下命令来恢复MQT:

db2 -tvf mqts.sql

这是迁移 MQT 的标准方法吗?必须有一种更简单的方法,我在这里错过了。

【问题讨论】:

    标签: sql database db2 db2-luw


    【解决方案1】:

    db2move主要是迁移数据,和数据相关的东西,比如每张表的DDL等。db2move甚至不迁移表之间的关系,所以你必须用ddl重新创建它们。

    考虑到前面的事情,MQT 只是一个 DDL,它没有任何数据。处理 DDL 的工具是 db2look,它有很多选项可以准确提取您想要的内容。

    您指出的过程是提取该 DDL 的正常过程。然而,我见过比你更困难的过程,处理 DDL 和 db2more/db2look;你的很“简单”。

    另一种选择是使用 Data Studio,但您不能编写脚本。

    【讨论】:

      【解决方案2】:

      我相信您所做的是正确的,因为 MQT 没有自己的数据,而是从基表中填充的。所以这个过程应该是将数据迁移到 MQT 所引用的基表中,然后简单地创建/刷新 MQT。

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 2014-02-13
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 1970-01-01
        • 2020-08-09
        相关资源
        最近更新 更多