DB2 資料遷移常見於版本升級、平台搬移、異構同步等場景。本文整理三大主流方案——「備份/還原」、「EXPORT/IMPORT」、「db2look + db2move」——的適用條件、操作步驟、優缺點與避坑指南,協助 DBA 依環境選擇最佳策略。
db2 backup database to compress include logs db2 restore database from taken at into logtarget db2 rollforward database to end of logs and complete | 限制項目 | 說明 |
|---|---|
| 跨平台 | 不支援。Linux 備份檔無法還原到 Windows/AIX,反之亦然。 |
| 跨版本 | 僅支援「向上相容」(如 11.1 → 11.5),不支援降級還原。 |
| 編碼/碼頁 | 來源與目標資料庫碼頁、地域設定必須一致,否則還原失敗或資料亂碼。 |
| 時間戳 | 還原時 taken at 必須與備份檔時間戳完全一致。 |
db2 "export to /data/t1.ixf of ixf select * from schema.t1"db2look 產生)db2 "import from /data/t1.ixf of ixf insert into schema.t1" 或用 LOAD 加速# 1. 產生 DDL(含表、索引、視圖、觸發程序、權限等)
db2look -d -e -a -o schema.sql -l -x -td %
# 2. 匯出所有表資料(PC/IXF 格式)
db2move export -sn -u -p
# 3. 目標端建立資料庫、執行 schema.sql
db2 -tvf schema.sql
# 4. 匯入資料(LOAD 模式更快)
db2move import -io replace -u -p
# 5. 重建外鍵、執行 RUNSTATS、REBIND
db2look 產生的 DDL 中,外鍵定義建議剪離到獨立檔,待所有資料 LOAD/IMPORT 完成後再執行,否則會因父表資料未就緒導致子表匯入失敗。db2move import 內部呼叫 IMPORT,大表建議手動改用 LOAD 並啟用 NONRECOVERABLE、INDEXING MODE REBUILD。DB2CODEPAGE、資料庫碼頁必須一致,避免中文亂碼。db2look -x 產生授權 DDL,務必在資料匯入後執行。db2move.lst 日誌| 維度 | 備份/還原 | EXPORT/IMPORT | db2look+db2move |
|---|---|---|---|
| 跨平台 | ❌ | ✅ | ✅ |
| 跨版本 | 僅升級 | ✅ | ✅ |
| 整庫速度 | ⚡️ 最快 | 🐢 最慢 | ⚡️ 快(配合 LOAD) |
| 單表/部分 | ❌ | ✅ | ✅ (需手動篩選) |
| 自動化程度 | 高 | 低 | 高 |
| 外鍵處理 | 自動 | 手動排序 | 半自動(需剪離 FK) |
db2look + db2move,配合大表手動 LOAD。EXPORT/IMPORT 或聯邦查詢(INSERT INTO ... SELECT * FROM remote.table)。沒有銀彈,只有最適合當下環境的方案。建議 DBA 團隊將三套流程都寫成標準化 Runbook,並定期演練,才能在真正遷移時從容應對。