資料庫還原操作透過備份映像重建資料庫。若要將資料庫從一台機器複製到另一台,最簡單的方式是從備份映像還原。然而,備份映像中包含來源系統的檔案系統路徑與實體裝置資訊。除非目標系統的儲存配置與來源完全一致,否則必須執行重導向還原,在還原過程中重新定義表空間容器路徑。
提示:DB2 V8 起支援跨平台還原(如 HP-UX → AIX/Solaris),但不適用於 Windows 與 Linux 之間。
RESTORE DATABASE ... REDIRECT 啟動還原並進入重導向模式。SET TABLESPACE CONTAINERS 為各表空間指定目標系統上的新容器路徑。RESTORE DATABASE ... CONTINUE 完成還原。重要:整個過程必須在同一個 CLP 會話中完成,否則會報 SQL0900N 失敗。建議將三步驟寫成腳本一次執行。
場景:來源實例 PROD,目標實例 MYINST,資料庫 MOVIES 位於 D 槽。
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
FROM 指定備份所在目錄,TO 指定目標資料庫目錄(Windows 需指定磁碟機代號)。
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')
容器 ID 0、1、2 分別對應 SYSCATSPACE、TEMPSPACE1、USERSPACE1。可用 LIST TABLESPACES SHOW DETAIL 確認來源所有表空間,確保目標端皆已定義容器。
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
重導向還原是 DB2 資料庫遷移與克隆的核心技能。掌握三步驟流程與容器重新定義技巧,即可靈活應對異構環境下的資料庫部署與災難恢復需求。