首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 資料庫異機備份還原完整指南:從備份檔案建立新資料庫

     編輯:DB2 教學

前言

在 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、名稱與類型。典型範例如下:

  • 表空間 ID = 0,名稱 = SYSCATSPACE,類型 = 系統管理空間 (SMS)
  • 表空間 ID = 1,名稱 = TEMPSPACE1,類型 = 系統管理空間 (SMS)

第三步:在目標機器建立對應目錄結構

在目標機器(例如 D:\DB2DATA)依照來源表空間名稱建立空目錄:

  • D:\DB2DATA\SYSCATSPACE
  • D:\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 驗證。
  • 若來源使用 DMS 表空間,容器定義語法需改為 using (file '路徑' 大小)。
  • 還原後建議執行 runstats 更新統計資訊,確保查詢效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved