Oracle 資料庫架構複雜,維護成本高。自 10g 起引入「自我調整」特性,至 11g 成熟穩定,成為 DBA 降低運維負擔、提升效能的關鍵利器。本文深入剖析兩大核心機制:自我調整檢查點 與 自我調整 SGA (ASMM)。
資料庫緩衝區中的「髒緩衝區」存放已修改未寫入磁碟的資料。舊版本需 DBA 手動調整 FAST_START_MTTR_TARGET 或 LOG_CHECKPOINT_INTERVAL 等參數,預估崩潰恢復時間,但參數相互影響大,多採預設值,導致:
啟用 FAST_START_MTTR_TARGET (預設 0 表關閉,設 >0 啟用),資料庫自動監控 I/O 負載,動態計算最佳檢查點頻率:
形象比喻:像「交通指揮」,只在車流稀疏時讓清潔車(DBWR)進場作業。
對比啟用前後的 AWR 報表,大型查詢的邏輯讀、物理讀、等待事件 log file switch completion 明顯下降,吞吐量提升 15%~30%。
自動調整只能優化「既有資源利用率」,若 I/O 子系統本身頻寬不足、記憶體嚴重不足,仍需擴充硬體。
SGA 包含共用池、資料庫緩衝區快取、大型池、Java 池、串流池等「元件」。傳統手動管理需為每個元件設定固定大小 (SHARED_POOL_SIZE, DB_CACHE_SIZE 等),面臨:
V$SGA_RESIZE_OPS、V$SGA_TARGET_ADVICE 手動微調,極度耗時。SGA_TARGET (總上限),將各元件參數設為 0 或保留最小值。MMAN (Memory Manager) 每分鐘採樣負載,自動在元件間轉移記憶體顆粒。SGA_TARGET。MEMORY_TARGET (11g AMM) 可進一步統一管理 SGA+PGA。| 參數 | 建議值 | 說明 |
|---|---|---|
| SGA_TARGET | 實體記憶體 40%~60% | 專用 DB Server 可調高;留足 OS 及 PGA 空間 |
| FAST_START_MTTR_TARGET | 300~1800 秒 | 視業務容許恢復時間而定;0 表關閉自動檢查點 |
| MEMORY_TARGET | (11g) 總記憶體上限 | 啟用 AMM 後 SGA_TARGET 自動衍生,勿同時手動設定 |
Oracle 11g 的「自我調整檢查點」與「ASMM」將 DBA 從繁瑣參數調校解放,讓資料庫依負載自動尋找最佳平衡點。建議:新部署直接啟用預設值,觀察一段時間後再微調;切勿一上來就手動鎖死各元件大小,反而失去彈性。