Oracle 實例記憶體架構分為兩大塊:SGA(System Global Area)為所有背景程序與前景程序共享,PGA(Program Global Area)則為每個伺服器程序專用。合理分配兩者比例,是效能調優的基石。
| 元件 | 配置值 |
|---|---|
| 共用池 | 200 MB |
| 資料緩衝區 | 24 MB |
| 大型池 | 9 MB |
| Java 池 | 32 MB |
| SGA 總計 | 264.933 MB |
| SGA_MAX_SIZE | 305.069 MB |
| PGA_AGGREGATE_TARGET | 240 MB |
| 目前 PGA 分配 | 8.7 MB |
| 歷史最大 PGA | 8.9 MB |
| 快取命中率 | 100% |
SGA + PGA < 實體記憶體 - OS/其他程序佔用。違反此原則會導致作業系統交換,效能劇降。
共用池過小會導致 ORA-04031 或頻繁硬解析;過大則擠佔資料緩衝區。
採用 LRU 演算法管理,包含 DEFAULT、KEEP、RECYCLE 三大池。DB_CACHE_SIZE 直接影響邏輯讀/物理讀比率。
由 LOG_BUFFER 控制,大量 DML 環境建議適度放大,減少 log file sync 等待。
PGA_AGGREGATE_TARGET,Oracle 自動分配排序、雜湊、位圖建立等作業區SORT_AREA_SIZE、HASH_AREA_SIZE 等,維護成本高監控 V$PGASTAT 中 cache hit percentage,若長期低於 90% 需增加 PGA 目標值。
SGA_MAX_SIZE 足夠支援未來動態成長V$SGASTAT 觀察共用池空閒記憶體,避免碎片化DB_CACHE_ADVICE 模擬不同緩衝區大小效益V$PGA_TARGET_ADVICE 獲取 PGA 最佳建議值STATISTICS_LEVEL = TYPICAL 以上,否則顧問功能失效記憶體調優非一次完成,需建立基線、持續監控、逐步微調。掌握 SGA/PGA 運作機制,才能精準診斷瓶頸、釋放硬體最大效能。