-- 1. Buffer Cache Hit Ratio (目標 > 0.90) SELECT 1 - (phy.value / (db.value + con.value)) FROM v$sysstat phy, v$sysstat db, v$sysstat con WHERE phy.name = 'physical reads' AND db.name = 'db block gets' AND con.name = 'consistent gets'; -- 2. Library Cache Hit Ratio (目標 > 0.99) SELECT SUM(pins - reloads) / SUM(pins) FROM v$librarycache; -- 3. Dictionary Cache Hit Ratio (目標 > 0.85) SELECT SUM(gets - getmisses - usage - fixed) / SUM(gets) FROM v$rowcache;
-- 爭用:WAITS/GETS < 1% SELECT SUM(gets), SUM(waits), SUM(waits)/SUM(gets) FROM v$rollstat; -- 縮減次數 SELECT rn.name, rs.shrinks FROM v$rollstat rs, v$rollname rn WHERE rs.usn = rn.usn;
| 實體 RAM | SHARED_POOL_SIZE | DB_BUFFER (db_block_size × db_block_buffers) | 備註 |
|---|---|---|---|
| 512M | 50M | 200M | OS+SGA+PGA < RAM |
| 1G | 100M | 500M | |
| 2G | 150M | 1.2G | |
| 4G | 200M | 2.5G | |
| 8G | 300M | 5G | |
| 12G | 300M~800M | 8G | Shared Pool 上限 800M |
LOG_BUFFER:128K ~ 1M,勿過大。LARGE_POOL_SIZE:10M ~ 50M (RMAN/Parallel Query 使用)。JAVA_POOL_SIZE:不跑 Java 給 30M 即可。SHARED_POOL_SIZE:不宜超過 300M (12c 後可更大),避免管理開銷抵銷效益。DB_BUFFER。OS RAM + SGA + Sessions × (SORT_AREA_SIZE + HASH_AREA_SIZE + 2M) < 實體 RAM