日誌策略概覽
- 循環日誌:主日誌檔循環寫入,寫滿且不可用時分配次要日誌檔 (受
logsecond 控制)。
- 歸檔日誌:主日誌檔寫滿即分配新主日誌檔,永不重用,磁碟空間允許下無限增長。
- 無限活動日誌:混合模式,允許活動事務跨越所有主日誌與一個或多個歸檔日誌,實現「無限」日誌空間。
無限活動日誌啟用條件
資料庫配置參數同時設定:
userexit = YES:日誌檔關閉時調用用戶提供的程式,將無用日誌移至永久儲存位置,消除伺服器端日誌空間耗盡風險。
logsecond = -1:啟用無限次要日誌檔機制。
運作機制
logprimary 與 logfilsiz 仍控制活動日誌路徑上保留的主日誌檔數量與大小。
- DB2 需讀取不在活動路徑的日誌檔時,自動調用
userexit 從歸檔位置取回並複製至活動區域,加速後續讀取。
- DB2 自動管理所需日誌檔的檢索、複製與移除。
優缺點權衡
| 優點 | 缺點 |
| 避免大事務/長事務導致日誌空間耗盡 | 回滾操作極慢 (Savepoint/事務級):需從歸檔位置檢索日誌檔 |
| 減少次要日誌檔頻繁分配的性能影響 | 崩潰恢復極慢:同樣需檢索歸檔日誌 |
| 適用超大作業環境的日誌需求 | 增加操作複雜度 (需編寫/維護 userexit 程式) |
配置建議
- 評估典型事務日誌產生量,設定
logprimary 覆蓋 95% 以上場景,logfilsiz 依 I/O 特性調整 (預設 4KB 頁面,Linux/Unix 1000 頁、Windows 250 頁)。
- 編寫健壯的
userexit 程式:支援複製至磁帶/網路儲存、錯誤重試、日誌檔命名規範、並發存取控制。
- 監控日誌使用率 (
db2 get db cfg、db2pd -logs),設定告警閾值。
- 定期演練崩潰恢復與時間點恢復 (PITR),驗證
userexit 取回機制有效性。
適用場景
- 超大批次作業、長時間運行的 ETL/報表事務
- 資料倉庫載入窗口、年底結算等尖峰負載
- 無法預先精確估算日誌需求的動態負載
總結
無限活動日誌是解決「日誌空間不足」的強力武器,但以回滾與崩潰恢復性能大幅下降為代價。僅在確有必要且具備完善歸檔/取回基礎設施時啟用,並務必做好恢復演練與監控。
- 上一篇文章: 使用 AWK 實現 DB2 資料庫 Schema 跨環境同步自動化
- 下一篇文章: DB2 通用升級修補包安裝標準流程 (Linux 實戰)
Copyright ©
程式碼之家 All Rights Reserved