當備份映像內記錄的檔案系統路徑/裸裝置與目標系統不一致時(如不同磁碟佈局、不同實例名稱、異機遷移),必須執行重導向恢復,明確指定目標端表空間容器路徑。
跨平台支援:DB2 V8 起支援 Unix 間跨平台恢復(HP-UX ↔ AIX ↔ Solaris),但 不支援 Windows/Linux 與 Unix 互相恢復。
restore database ... redirect:啟動重導向模式。set tablespace containers for ... using ...:定義每個表空間的目標容器路徑。restore database ... continue:提交並完成恢復。建議將三步驟寫入腳本一次執行,避免 Session 中斷導致 SQL0900N 失敗。
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
若跨機器,請在目標機建立相同路徑並複製 213640.0 映像檔。
set DB2INSTANCE=MYINST
db2start
db2 restore db movies from d taken at 20021006213640 to d redirect
db2 set tablespace containers for 0 using (path 'd:\s0con1')
db2 set tablespace containers for 1 using (path 'd:\s1con1')
db2 set tablespace containers for 2 using (path 'd:\s2con1')
使用 list tablespaces show detail 核對來源端所有表空間 ID,確保逐一定義。
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
db2stop
set DB2INSTANCE=PROD
db2stop
from:備份映像所在父目錄 (若非當前目錄必須指定)。taken at:備份時間戳,精確到秒。to:目標資料庫目錄 (Windows 需指定磁碟代號)。redirect / continue:成對使用,中間插入容器定義。