2014-01-24 21 views
0

我正在將數據庫從DB2 10.1 for Windows x86_64遷移到DB2 10.1 for Linux x86_64 - 這是操作系統和機器類型的組合,它們不兼容備份文件格式,這意味着我不能只做一個備份和恢復。使用db2move和db2look遷移DB2物化查詢表(MQT)的正確方法

相反,我使用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的方法?這裏有一個更簡單的方法,我在這裏失蹤。

回答

2

db2move主要用於遷移數據以及與該數據相關的內容,例如每個表的DDL等.db2move甚至不會遷移表之間的關係,因此您必須使用ddl重新創建它們。

考慮到以前的事情,MQT只是一個DDL,它沒有任何數據。處理DDL的工具是db2look,它有很多選項來提取你想要的東西。

您指出的過程是提取該DDL的正常過程。但是,我看到了比您更難處理的進程,處理DDL和db2more/db2look;你的「簡單」。

另一種選擇是使用Data Studio,但不能編寫腳本。

0

我相信你所做的是正確的,因爲MQT沒有自己的數據並且從基表填充。所以這個過程應該是將數據遷移到MQT所引用的基表中,然後簡單地創建/刷新MQT。