指定 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 產生的備份重建資料,表空間最終狀態為「正常」,資料完整保留。
該選項標記 LOAD 為不可恢復,完成後表空間狀態正常,但不產生任何備份。後續若執行前滾恢復,該事務會被跳過,目標表將標記為無效(SQL1477N),唯有重建表或從 LOAD 之後的完整備份恢復。
db2 load from staff.del of del insert into staff nonrecoverable
適用場景:資料可從來源系統重新產生、測試環境、或具備其他容災機制的大批量初始載入。
覆蓋 LOAD 預設的 COPY NO 行為,強制全例採用指定策略:
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,確認覆蓋生效。
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。