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

DB2 LOAD 命令進階選項詳解(二):COPY YES、NONRECOVERABLE 與註冊表變量

     編輯:DB2 教學

COPY YES:載入即備份,確保可恢復性

指定 COPY YES TO <路徑> 時,LOAD 完成後自動對目標表空間執行備份,表空間狀態保持「正常」,無需人工介入。代價是載入耗時增加,但換取前滾恢復時的無縫銜接。

db2 load from staff.del of del insert into staff copy yes to .

操作後可見生成 SAMPLE.4 子目錄(Type=4 表示 LOAD 產生的備份)。若需恢復:

db2 restore db sample taken at 20051230174105
db2 rollforward db sample to end of logs and stop

前滾過程會自動套用 LOAD 產生的備份重建資料,表空間最終狀態為「正常」,資料完整保留。

NONRECOVERABLE:極速載入,犧牲可恢復性

該選項標記 LOAD 為不可恢復,完成後表空間狀態正常,但不產生任何備份。後續若執行前滾恢復,該事務會被跳過,目標表將標記為無效(SQL1477N),唯有重建表或從 LOAD 之後的完整備份恢復。

db2 load from staff.del of del insert into staff nonrecoverable

適用場景:資料可從來源系統重新產生、測試環境、或具備其他容災機制的大批量初始載入。

註冊表變量 DB2_LOAD_COPY_NO_OVERRIDE:統一預設行為

覆蓋 LOAD 預設的 COPY NO 行為,強制全例採用指定策略:

  • 強制 COPY YES:
    db2set DB2_LOAD_COPY_NO_OVERRIDE="COPY YES TO E:\TEST"
    db2 terminate
    db2set
    db2 load from staff.del of del insert into staff
    執行時會發出警告 SQL27966W,確認覆蓋生效。
  • 強制 NONRECOVERABLE:
    db2set DB2_LOAD_COPY_NO_OVERRIDE=NONRECOVERABLE
    db2 terminate
    db2set
    db2 load from staff.del of del insert into staff

決策指南

選項備份產生表空間狀態前滾恢復支援適用場景
COPY NO(預設)否備份暫掛需手動備份表空間後方可前滾需人工控制備份時機
COPY YES是(Type=4)正常自動套用,無縫恢復生產環境、高可用性要求
NONRECOVERABLE否正常不可恢復,表將失效可重建資料、非關鍵表、極速載入

總結

理解 LOAD 三大復原選項的權衡,配合註冊表變量統一策略,能在載入效能與資料保護間取得最佳平衡。生產環境強烈建議採用 COPY YES 或預設 COPY NO 搭配即時表空間備份,切勿輕易使用 NONRECOVERABLE。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved