我正在将数据库从 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
然后我可以获取所有这些值并将它们输入 adb2look
以生成每个表的 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 的标准方法吗?必须有一种更简单的方法,我在这里错过了。