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

DB2 LOAD 命令核心選項詳解(一):COPY NO、COPY YES、NONRECOVERABLE 實戰全記錄

     編輯:DB2 教學

背景:前滾恢復與 LOAD 的日誌極小化

啟用歸檔日誌(前滾恢復)的資料庫,恢復時需套用備份後的所有日誌。但 LOAD 為追求極速,僅在 DELETE 階段記錄違反唯一約束的刪除行,幾乎不產生日誌。為避免前滾時因缺日誌導致表空間異常,DB2 提供三種 LOAD 復原選項:

  • COPY NO(預設)
  • COPY YES
  • NONRECOVERABLE

備份映像檔命名規則

Windows 環境下為目錄結構:資料庫別名.Type\實例\Node0000\Catn0000\yyyymmdd\hhmmss.序號

Type 編碼:0=完整備份、3=表空間備份、4=LOAD 產生備份。

基準環境建立

db2 backup db sample
-- 產生 SAMPLE.0 目錄,時間戳 20051230174105

選項一:COPY NO(預設)—— 需人工解除備份暫掛

db2 load from staff.del of del insert into staff
db2 list tablespaces show detail
-- 表空間狀態 0x0020 = 備份暫掛

此狀態下可 SELECT,但 UPDATE/DELETE 會報 SQL0290N。解除方式:

db2 backup db sample tablespace (userspace1)
-- 產生 SAMPLE.3 目錄,表空間恢復正常

前滾恢復驗證 COPY NO 流程

  1. db2 restore db sample taken at 20051230174105
  2. db2 rollforward db sample to end of logs and stop → 表空間進入「恢復暫掛」(0x0100)
  3. db2 restore db sample tablespace (userspace1) taken at 20051230184841(套用步驟 2 產生的表空間備份)
  4. db2 rollforward db sample to end of logs and stop tablespace (userspace1) → 表空間進入「前滾暫掛」(0x0080)再轉正常
  5. 驗證 UPDATE 成功

選項二:COPY YES —— 自動備份,無縫前滾

db2 load from staff.del of del insert into staff copy yes to .
-- 產生 SAMPLE.4 目錄,表空間直接正常

前滾恢復時自動套用 Type=4 備份,無需人工介入,表空間全程正常,資料完整保留。

選項三:NONRECOVERABLE —— 極速但不可恢復

db2 load from staff.del of del insert into staff nonrecoverable
-- 表空間正常,但無備份產生

前滾恢復時跳過該事務,表標記無效(SQL1477N),僅能 Drop 重建或從 LOAD 後的完整備份恢復。

總結對照

指標COPY NOCOPY YESNONRECOVERABLE
備份產生無(需手動)自動(Type=4)無
載入後表空間備份暫掛正常正常
前滾恢復需表空間備份配合自動無縫不可恢復,表失效
適用場景需控制備份時點生產標準選項可重建資料、測試環境
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved