Oracle命中率查詢(xún),SGA調(diào)優(yōu)
僅僅是一些常識(shí)性的經(jīng)驗(yàn)
--數(shù)據(jù)高速緩存區(qū)命中率
--計(jì)算公式:1-(physical reads / (db block gets + consistent gets))
--命中率應(yīng)大于0.90最好
select name,value
from v$sysstat
where name in ('physical reads','db block gets','consistent gets')
/
--共享區(qū)庫(kù)緩存區(qū)命中率
--計(jì)算公式:SUM(pins - reloads) / SUM(pins)
--命中率應(yīng)大于0.99
select sum(pins-reloads)/sum(pins)
from v$librarycache
/
--共享區(qū)字典緩存區(qū)命中率
--計(jì)算公式:SUM(gets - getmisses - usage -fixed) / SUM(gets)
--命中率應(yīng)大于0.85
select sum(gets-getmisses-usage-fixed)/sum(gets)
from v$rowcache
/
--檢測(cè)回滾段的爭(zhēng)用
--SUM(waits)值應(yīng)小于SUM(gets)值的1%
select sum(gets),sum(waits),sum(waits)/sum(gets)
from v$rollstat
/
--檢測(cè)回滾段收縮次數(shù)
select name,shrinks
from v$rollstat, v$rollname
where v$rollstat.usn = v$rollname.usn
/
--關(guān)于SGA的調(diào)優(yōu)
(****) : OS 使用內(nèi)存+ SGA + session*(sort_area_size + hash_area_size + 2M) < 總物理RAM 為好
log_buffer : 128K ---- 1M 之間通常問(wèn)題不大,不應(yīng)該太大
large_pool_size :假如不設(shè)置MTS,通常在 RMAN 、OPQ 會(huì)使用到,但是在10M --- 50M 應(yīng)該差不多了。
java_pool_size : 若不使用java,給30M通常就夠了
data buffer ,在做了前面的設(shè)置后,凡可以提供給oracle的內(nèi)存,都應(yīng)該給data buffer = (db_block_size * db_block_buffers)
不能設(shè)置 shared_pool_size 過(guò)大,通常應(yīng)該控制在200M--300M
再具體化,注重滿(mǎn)足上面(****) 的原則的基礎(chǔ)上可以參考如下設(shè)置
假如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
物理內(nèi)存再大已經(jīng)跟參數(shù)沒(méi)有關(guān)系了
假定64 bit ORACLE
內(nèi)存4G
shared_pool_size = 200M , data buffer = 2.5G
內(nèi)存8G
shared_pool_size = 300M , data buffer = 5G
內(nèi)存 12G
shared_pool_size = 300M-----800M , data buffer = 8G