檢查點觸發 DBWn 將「髒緩衝區」寫入資料檔,確立資料庫一致性邊界。間隔越短 → 恢復越快(重做日誌掃描少),但 I/O 衝突越頻繁 → 吞吐量下降。反之間隔過長,故障恢復時間不可控。DBA 的任務即在兩者間取得動態平衡。
| 類型 | 觸發條件 | 控制手段 |
|---|---|---|
| 資料庫檢查點 | 重做日誌群組切換 | 調整重做日誌檔大小 |
| 表空間檢查點 | 表空間 OFFLINE/READ ONLY | 運維操作觸發,不可參數控制 |
| 時間檢查點 | 固定時間間隔 | LOG_CHECKPOINT_TIMEOUT |
LOG_CHECKPOINT_TIMEOUT(秒)最大檢查點間隔。設 0 表示停用時間檢查點,完全仰賴日誌切換觸發。建議:若重做日誌大小規劃得當,可設 0 簡化模型。
LOG_CHECKPOINT_INTERVAL(OS 區塊數)寫入指定量重做日誌後強制檢查點。陷阱: 若設值對應的重做量超過日誌檔大小,將導致「日誌切換檢查點」與「間隔檢查點」幾乎同時觸發,造成 I/O 風暴。
實務公式: 目標值 ≈ (日誌檔大小 / 2) / OS_BLOCK_SIZE,使檢查點落在兩次日誌切換中點。
LOG_CHECKPOINT_ALERT (TRUE/FALSE)僅控制是否在 Alert Log 記錄檢查點資訊,供事後驗證間隔是否符合預期。
LOG_CHECKPOINT_INTERVAL: 在切換中點插入一次檢查點,將最長恢復窗口壓縮至半個日誌週期。V$SYSSTAT 中 background checkpoints completed、checkpoint writes、Alert Log 記錄頻率。設定 FAST_START_MTTR_TARGET(秒),Oracle 自動調整檢查點頻率以滿足目標平均恢復時間 (MTTR),內部動態平衡 I/O 負載,建議作為現代環境首選管理方式。