在 DB2 管理實務中,常遇到需將生產環境的備份檔案還原至測試或開發環境的需求。由於來源與目標伺服器的檔案系統路徑、表空間容器配置往往不同,無法直接透過控制中心圖形介面完成還原,必須使用命令列搭配重導向還原技術。本文詳細記錄實操步驟,供初學者參考。
假設備份檔案已複製至本地端 E:\DB2BAK 目錄。請確認備份檔案完整,包含完整的資料庫備份映像與時間戳記(例如 20090909090909)。
開啟 DB2 命令視窗,執行下列指令:
db2 restore database 原資料庫名稱 from E:\DB2BAK taken at 20090909090909 into 新資料庫名稱 redirect without rolling forward
系統將回報 SQL1277N 錯誤,提示偵測到一或多個表空間容器無法存取,狀態設為「必須定義儲存裝置」。這是因為目標機器不存在來源資料庫的表空間容器路徑。
回到來源伺服器,連線資料庫並列出表空間資訊:
db2 connect to 資料庫名稱
db2 list tablespaces
記錄輸出中的表空間 ID、名稱與類型。典型範例如下:
在目標機器(例如 D:\DB2DATA)依照來源表空間名稱建立空目錄:
D:\DB2DATA\SYSCATSPACED:\DB2DATA\TEMPSPACE1注意: 目錄必須為空,除子目錄外不得包含任何檔案。
回到目標機器命令列,依序執行 SET TABLESPACE CONTAINERS 指令:
db2 set tablespace containers for 0 using (path "D:\DB2DATA\SYSCATSPACE")
db2 set tablespace containers for 1 using (path "D:\DB2DATA\TEMPSPACE1")
若有更多表空間,依 ID 遞增設定。每條指令成功會顯示 DB20000I 訊息。
所有容器路徑重定義完成後,執行續傳指令:
db2 restore database 原資料庫名稱 continue
等待作業完成,新資料庫即建立完畢,可透過 db2 list db directory 驗證。
db2ckbkp 驗證。using (file '路徑' 大小)。runstats 更新統計資訊,確保查詢效能。