共享池 = 庫快取 + 字典快取 + SQL 區。優化核心:最大化命中率、最小化重載率。整體大小由 SHARED_POOL_SIZE 控制。
V$SYSSTAT 取得 redo log space requests、redo entries。LOG_BUFFER 並持續監控。V$LATCH + V$LATCHNAME 過濾 'redo allocation'、'redo copy'。LOG_SMALL_ENTRY_MAX_SIZE。LOG_SIMULTANEOUS_COPIES (建議 2×CPU) 或增加 LOG_ENTRY_PREBUILD_THRESHOLD。sorts (memory):記憶體排序(佳)。sorts (disk):磁碟排序(慢 ~14,000 倍)。SORT_AREA_SIZE (PGA) 或 PGA_AGGREGATE_TARGET (10g+ 自動管理)。SELECT namespace, pins, reloads FROM V$LIBRARYCACHE;
NAMESPACE:'SQL AREA'、'TABLE/PROCEDURE'、'BODY'、'TRIGGER' 等。PINS:執行呼叫總次數。RELOADS:隱式解析/重載錯誤次數。RELOADS / PINS < 1% 為合格。超標措施:
SHARED_POOL_SIZE 或 OPEN_CURSORS。CURSOR_SPACE_FOR_TIME=TRUE 加速呼叫(需足夠私有 SQL 區)。SELECT SUM(gets), SUM(getmisses) FROM V$ROWCACHE;
GETMISSES / GETS < 10%~15%;否則增大 SHARED_POOL_SIZE。
| 參數 | 影響對象 | 典型調整方向 |
|---|---|---|
| SHARED_POOL_SIZE | 共享池整體 | 依重載率/未命中率調大 |
| OPEN_CURSORS | 私有 SQL 區上限 | 應用游標多時調大 |
| CURSOR_SPACE_FOR_TIME | 游標壽命策略 | 無重載時可設 TRUE |
| LOG_BUFFER | Redo Buffer | Latch 爭用時調大 |
| LOG_SIMULTANEOUS_COPIES | Redo Copy Latch | 設為 2×CPU 核心 |