--資料快取區命中率
--計算公式:1-(physical reads / (db block gets + consistent gets))
--命中率應大於0.90最好
select name,value
from v$sysstat
where name in ('physical reads','db block gets','consistent gets')
/
--共用區庫緩衝區命中率
--計算公式:SUM(pins - reloads) / SUM(pins)
--命中率應大於0.99
select sum(pins-reloads)/sum(pins)
from v$librarycache
/
--共用區字典緩衝區命中率
--計算公式:SUM(gets - getmisses - usage -fixed) / SUM(gets)
--命中率應大於0.85
select sum(gets-getmisses-usage-fixed)/sum(gets)
from v$rowcache
/
--檢測復原段的爭用
--SUM(waits)值應小於SUM(gets)值的1%
select sum(gets),sum(waits),sum(waits)/sum(gets)
from v$rollstat
/
--檢測復原段收縮次數
select name,shrinks
from v$rollstat, v$rollname
where v$rollstat.usn = v$rollname.usn
/
--關於SGA的調優
(****) : OS 使用記憶體+ SGA + session*(sort_area_size + hash_area_size + 2M) < 總物理RAM 為好
log_buffer : 128K ---- 1M 之間通常問題不大,不應該太大
large_pool_size :如果不設定MTS,通常在 RMAN 、OPQ 會使用到,但是在10M --- 50M 應該差不多了。
java_pool_size : 若不使用java,給30M通常就夠了
data buffer ,在做了前面的設定後,凡可以提供給oracle的記憶體,都應該給data buffer = (db_block_size * db_block_buffers)
不能設定 shared_pool_size 過大,通常應該控制在200M--300M
再具體化,注意滿足上面(****) 的原則的基礎上可以參考如下設定
如果512M RAM
建議 shared_pool_size = 50M, data buffer = 200M
如果1G RAM
shared_pool_size = 100M , data buffer = 500M
如果2G
shared_pool_size = 150M ,data buffer = 1.2G
實體記憶體再大已經跟參數沒有關係了
假定64 bit ORACLE
記憶體4G
shared_pool_size = 200M , data buffer = 2.5G
記憶體8G
shared_pool_size = 300M , data buffer = 5G
記憶體 12G
shared_pool_size = 300M-----800M , data buffer = 8G