簡介
設想您是一個 DB2 商業數據庫系統的管理員。您被給予一項任務,支持業務開發和測試團隊對商業系統的持續開發,為他們創建一套獨立於產品環境的數據庫系統,從而不影響日常的商業運作。由於種種原因,這套開發和測試數據庫系統將運行在一個不同於產品環境的操作系統。我們知道 DB2 提供了一些方便的數據庫管理工具,比如數據庫的整體備份和恢復功能,用戶可以用它很方便的將一個 DB2 數據庫從一台物理節點遷移到另一個物理節點,但是 DB2 的備份和恢復功能目前只支持同構操作系統平台間的遷移,比如從 Windows 平台到 Windows 平台,AIX 平台到 AIX 平台。對於上述任務要求的跨平台的數據庫遷移,就沒有一個專門的工具可以很方便的實現。
遷移步驟
經過筆者的實踐,總結 DB2 數據庫的跨平台遷移步驟如下:
下面給出一個遵循上述步驟的具體例子,其中將給出執行這些步驟的具體 DB2 命令以供參考。
1. 記錄源數據庫管理系統配置參數。這些是很重要的數據環境設置,其中的一些設置關系到遷移能否成功。
清單 1. 顯示數據庫管理系統配置參數的命令
db2 get dbm cfg
清單 2. 顯示數據庫配置參數的命令
db2 get db cfg for source_db_name
注意:Italic part should be replaced by your settings.
注意:對於比較復雜的源數據庫,要注意它的應用程序組內存大小參數(appgroup_memo_sz)。如果它的大小不夠,後面生成數據對象定義的時候會有問題。
清單 3. 顯示數據庫注冊表變量的命令
db2set -all
清單 4. 顯示數據庫表空間的命令
db2 list tablespaces show detail
清單 5. 顯示數據庫程序包的命令
db2 list packages
上述顯示表空間和程序包的命令都需要先建立到源數據庫的連接。
2. 檢查源數據庫系統對象,明確要遷移哪些數據庫系統對象
如何檢查源數據庫系統對象?一個最直觀的方法就是使用DB2控制中心(db2cc)浏覽查看表,視圖,觸發器,用戶定義的函數,存儲過程等數據庫對象。尤其要注意有無大的表,比如一行數據的表定義可能大於8K的表。 這樣的表需要在目標數據庫上建立具有足夠頁大小的表空間。下面的步驟中將會給出列子。還需要注意的是有無外部定義的存儲過程,這些存儲過程所關聯的外部程序包需要手工重新關聯。
3. 導出源數據庫系統的數據集
DB2 提供了一個工具叫作 db2move,用戶通過它可以把所有用戶定義的表中的數據導出到 IXF(集成交換格式)的文件中。同時,在導入數據的時候,它還可以生成表上的所定義的索引。具體的導出執行命令如下:
清單 6. 導出源數據集
db2move dbname
export -u