本文記錄一次真實的 DB2 線上備份映像跨機器、跨實例、重命名還原的完整操作日誌,涵蓋 線上備份含日誌 → 跨主機複製映像 → 目標端預建表空間容器 → REDIRECT 還原 → 容器路徑重定義 → 繼續還原 → 前滾上線 的標準化流程,適用於異機測試環境建立、生產遷移演練等場景。
WDCS,Windows,備份目標 E:\Allan。WDCS,日誌路徑 C:\db2workspace\wdcs_log,容器路徑 C:\DB2\NODE0000\WDCS\...。db2 backup db wdcs online to E:\Allan include logs
# 產生時間戳:20100420093345
將整個備份目錄結構 E:\Allan\WDCS.0\DB2\NODE0000\CATN0000\20100420\093345.001 複製至目標機 C:\temp。
db2 list tablespaces show detail
記錄每個表空間的 ID (0-8)、類型 (DMS/SMS)、容器路徑、大小。目標端必須按此 ID 逐一建立對應容器。
mkdir C:\DB2\NODE0000\wdcs\syscatspace
mkdir C:\DB2\NODE0000\wdcs\tempspace1
mkdir C:\DB2\NODE0000\wdcs\userspace1
mkdir C:\DB2\NODE0000\wdcs\systoolspace
mkdir C:\DB2\NODE0000\wdcs\tablespace1
mkdir C:\DB2\NODE0000\wdcs\indexspace1
mkdir C:\DB2\NODE0000\wdcs\systoolstmpspace
# DMS 檔案容器需預建檔案 (此處為示意,實際大小依源端而定)
# fsutil file createnew C:\db2workspace\wdcscontainer\dms.dat 52428800000 (50GB)
db2 create db wdcs
db2 restore db wdcs from c:\temp taken at 20100420093345 into wdcs logtarget c:\db2workspace\wdcs_log redirect
系統提示 SQL1277N 要求定義容器,進入交互式容器定義階段。
db2 set tablespace containers for 0 using (path "c:\DB2\node0000\wdcs\syscatspace")
db2 set tablespace containers for 1 using (path "c:\DB2\node0000\wdcs\tempspace1")
db2 set tablespace containers for 2 using (path "c:\DB2\node0000\wdcs\userspace1")
db2 set tablespace containers for 3 using (path "c:\DB2\node0000\wdcs\systoolspace")
db2 set tablespace containers for 4 using (path "c:\DB2\node0000\wdcs\tablespace1")
db2 set tablespace containers for 5 using (path "c:\DB2\node0000\wdcs\indexspace1")
db2 set tablespace containers for 6 using (path "c:\DB2\node0000\wdcs\systoolstmpspace")
# DMS 檔案容器 (ID 7, 8)
db2 set tablespace containers for 7 using (file "c:\db2workspace\wdcscontainer\dms.dat" 50000)
db2 set tablespace containers for 8 using (file "c:\db2workspace\wdcscontainer\index.dat" 50000)
鐵律:FOR <tablespace_id> 必須與源端 LIST TABLESPACES 顯示的 ID **完全一致**,順序不可錯。
db2 restore db wdcs continue
此階段才真正將資料頁寫入新定義的容器中。
db2 rollforward db wdcs to end of logs and stop overflow log path (C:\db2workspace\wdcs_log)
資料庫進入 NORMAL 狀態,驗證業務可用。
| 環節 | 關鍵點 |
|---|---|
| 備份映像結構 | 保持完整目錄樹 (DBNAME.0/DB2/NODE.../CATN.../TS/SEQ.001) |
| 容器 ID 對應 | 源端 LIST TABLESPACES ID ↔ 目標端 SET CONTAINERS FOR ID |
| DMS 容器預建 | 檔案容器需預建檔案並指定大小 (50000 頁 = ~200MB) |
| LOGTARGET | 還原階段從映像提取日誌至指定目錄,供前滾讀取 |
| OVERFLOW LOG PATH | 前滾階段讀取額外歸檔日誌的路徑 (含 LOGTARGET 提取的日誌) |
此流程為 DB2 異機遷移的「教科書級」標準作法,嚴格遵循容器 ID 對應與 REDIRECT 兩階段提交機制,成功率極高。