【发布时间】: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 的标准方法吗?必须有一种更简单的方法,我在这里错过了。
【问题讨论】: