Redo Log Buffer 爭用會完全扼殺資料庫效能。核心指標:redo log space requests 應趨近 0。若偏高,需系統性消除 Latch 爭用並輔以索引優化減少 Redo 產生量。
SELECT name, value FROM V$SYSSTAT WHERE name = 'redo log space requests';
值 > 0 → 增加 LOG_BUFFER (init.ora/SPFILE),重啟生效。
查詢 V$LATCH + V$LATCHNAME:
SELECT n.name, l.gets, l.misses, l.immediate_gets, l.immediate_misses
FROM V$LATCH l, V$LATCHNAME n
WHERE n.name IN ('redo allocation','redo copy') AND n.latch# = l.latch#;
GETS 成功、MISSES 失敗排隊。IMMEDIATE_GETS 立即成功、IMMEDIATE_MISSES 立即失敗自旋。LOG_SMALL_ENTRY_MAX_SIZE。LOG_SIMULTANEOUS_COPIES (建議 2×CPU)。LOG_ENTRY_PREBUILD_THRESHOLD。sorts (memory) vs sorts (disk)。SORT_AREA_SIZE 或 PGA_AGGREGATE_TARGET。ALTER INDEX idx REBUILD 遠快於 Drop+Create。CREATE INDEX idx ON t(col) NOSORT 跳過排序階段。| 參數 | 調整方向 | 適用場景 |
|---|---|---|
| LOG_BUFFER | 調大 | Redo Space Requests > 0 |
| LOG_SMALL_ENTRY_MAX_SIZE | 調小 | Allocation Latch 爭用 |
| LOG_SIMULTANEOUS_COPIES | 設 2×CPU | Copy Latch 爭用 |
| LOG_ENTRY_PREBUILD_THRESHOLD | 調大 | 預建 Redo Entry 減少持有時間 |
| SORT_AREA_SIZE | 調大 | Disk Sorts 過多 |