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

同平台 DB2 重定向恢復實戰:容器路徑遷移三步驟腳本化

     編輯:DB2 教學

適用場景

同作業系統、同 DB2 版本、同位數(32/64-bit)環境下,將數據庫從源機器克隆到目標機器,且文件系統路徑、磁盤佈局不一致時,必須使用重定向恢復。

核心原理:三階段同會話執行

  1. RESTORE DB ... REDIRECT:進入重定向模式,DB2 暫停恢復等待容器定義;
  2. SET TABLESPACE CONTAINERS FOR USING (...):逐個重新定義需遷移的表空間容器;
  3. RESTORE DB ... CONTINUE:提交容器定義,完成數據頁恢復。

鐵律:三條命令必須在同一 CLP 會話(或同一腳本管道)執行,否則報 SQL0900N 失敗。

實戰腳本範例(Windows)

REM 1. 源端離線完全備份
db2 backup db YNDC
REM 備份時間戳 20070315165040,映像位於 D:\backup\autobak\YNDC.0\DB2\NODE0000\CATN0000\20070315\165040\001\165040.0

REM 2. 目標端建立相同目錄樹並拷貝 165040.0

REM 3. 查詢源端表空間
db2 list tablespaces
REM 需重定向的 DMS 表空間 ID:3(YNDC)、5(USERTEMPSP)、6(TEMPSPACE8K)
REM SMS 表空間 0,1,2,4 系統自動管理,無需重定向

REM 4. 目標端執行重定向恢復腳本(單文件 redirect_restore.db2)
db2 create db YNDC;

restore db YNDC from d taken at 20070315165040 to d redirect;

set tablespace containers for 3 using (FILE "G:\DB2Containner_2\YNDC\YNDC" 5242880);
set tablespace containers for 5 using (FILE "G:\DB2Containner_2\YNDC\USERTEMPSP" 51200);
set tablespace containers for 6 using (FILE "G:\DB2Containner_2\YNDC\TEMPSPACE8K" 51200);
set tablespace containers for 4 using (PATH 'G:\DB2Containner_2\YNDC\sys');

restore db YNDC continue;

關鍵細節

  • 容器類型必須匹配:源端 DMS → 目標端 FILE + 大小(頁數);源端 SMS → 目標端 PATH。
  • 緩衝池過大導致啟動失敗:恢復後若實例無法啟動,檢查 ALTER BUFFERPOOL ... SIZE 調整至目標機記憶體許可範圍。
  • TO d 指定目標端備份映像所在磁盤根目錄,TAKEN AT 需與備份時間戳完全一致。

驗證步驟


db2 list db directory
db2 connect to YNDC
db2 list tablespace containers for 3
db2 list tablespace containers for 5
db2 list tablespace containers for 6
db2 connect reset
db2 terminate

避坑清單

錯誤現象根因修正
SQL0900N命令非同會話執行寫入單一 .db2 腳本用 db2 -tvf 執行
SQL2567N 容器類型不匹配SMS/DMS 定義混用核對源端 LIST TABLESPACES SHOW DETAIL 類型
實例啟動失敗 SQL1477N緩衝池 SIZE 超過物理記憶體恢復後連接數據庫執行 ALTER BUFFERPOOL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved