標準 RESTORE 會沿用備份映像檔中記錄的原始檔案系統路徑。若目標機器的磁碟配置、掛載點、實例名稱與來源不同,直接還原會失敗。重導向恢復 允許在還原過程中重新定義表空間容器路徑,是異機/異實例克隆資料庫的標準做法。
提示:DB2 V8 起支援跨 Unix-like 平台還原(如 HP-UX → AIX/Solaris),但 Windows/Linux 間不支援跨平台。
關鍵限制:三步驟必須在同一 CLP 連線/腳本中執行,否則報 SQL0900N。建議寫成單一 Shell/批次腳本執行。
set DB2INSTANCE=PROD
db2start
db2 backup db movies
假設備份時間戳記為 20021006213640,備份檔位於 D:\MOVIES.0\PROD\NODE0000\CATN0000\20021006\213640.0。
md MOVIES.0\MYINST\NODE0000\CATN0000\20021006
copy D:\MOVIES.0\PROD\NODE0000\CATN0000\20021006\213640.0
D:\MOVIES.0\MYINST\NODE0000\CATN0000\20021006\213640.0
此步驟至關重要:目錄名稱中實例名必須替換為目標實例(MYINST),否則後續 RESTORE 會找不到映像檔。
set DB2INSTANCE=MYINST
db2start
db2 restore db movies from d taken at 20021006213640 to d redirect
FROM d:備份檔所在磁碟(若非當前目錄必須指定)TO d:目標資料庫目錄(Windows 必須指定磁碟代號)REDIRECT:進入重導向模式,等待容器定義先用 LIST TABLESPACES SHOW DETAIL 確認來源表空間 ID(通常 0=SYSCATSPACE, 1=TEMPSPACE1, 2=USERSPACE1),再逐一定義:
db2 set tablespace containers for 0 using (path 'd:\ts0con1')
db2 set tablespace containers for 1 using (path 'd:\ts1con1')
db2 set tablespace containers for 2 using (path 'd:\ts2con1')
每個表空間可定義多個容器分散 I/O;容器類型支援 PATH(目錄)、FILE(檔案)、DEVICE(裸裝置)。
db2 restore db movies continue
db2 list db directory
db2 connect to movies
db2 list tablespace containers for 0
db2 list tablespace containers for 1
db2 list tablespace containers for 2
db2 connect reset
db2 terminate
db2 stop
set DB2INSTANCE=PROD
db2 stop
重導向恢復是 DB2 跨環境克隆資料庫的核心技能。掌握「備份→建目錄樹→REDIRECT→定義容器→CONTINUE」五步曲,並將其腳本化、參數化,即可安全高效完成開發/測試環境建立、災難恢復演練、跨機房遷移等常見任務。