oracle性能调优之--Share Pool调整与优化(三)
,执行的次数为次1137146337 (PINS 列)。
b.重载(RELOADS)的次数为1202492,表明一些对象无效或因librarycache过小被agedout,则这些对象被执行了重载。
c.无效的对象(INVALIDATIONS)为38273次。
d.基于查询的结果,可以用于判断shared_pool_size的reloads,invalidations的情况,是否调整share_pool_size请参考后面十,十一,十二点
九、数据字典缓存(data dictionary cache)
使用视图v$rowcache获取数据字典缓存的信息
该视图中包含字典对象的定义信息
gets: 请求对象的次数
getmisses:在data dictionarycache中请求对象失败的次数
调整目标:避免请求失败
也可根据statspack来调整data dictionary cache
通常情况下,应保证数据字典缓存命中率为95%或高于95%
--下面查询数据字典缓存的命中率与缺失率
SELECT ROUND(((1-SUM(getmisses)/(SUM(gets)+SUM(getmisses))))*100,3) "Hit Ratio"
,ROUND(SUM(getmisses)/sum(gets)*100,3) "Misses Ratio"
FROM v$rowcache
WHERE gets + getmisses <> 0;
HitRatio Misses Ratio
--------- ------------
99.865 .135
缺失率应当低于以下百分比
<2% 对于常用的数据字典对象
<15% 整个数据字典缓冲对象
整个数据字典的缺失率
SELECT ROUND((100*SUM(getmisses)/decode(SUM(gets),0,1,SUM(gets))),2) Getmiss_ratio www.2cto.com
FROM v$rowcache;
GETMISS_RATIO
-------------
.14
不同的组件对象检查组件的缺失率及命中率的情况
SELECT parameter
,SUM(gets)
,SUM(getmisses)
,ROUND((100*SUM(getmisses)/decode(SUM(gets),0,1,SUM(gets))),2) Getmiss_ratio
,ROUND((100*SUM(gets-getmisses)/SUM(gets)),2) Hit_Ratio
,SUM(modifications) updates
FROM v$rowcache
WHERE gets>0
GROUP BY parameter
ORDER BY Getmiss_ratio DESC,Hit_Ratio DESC;
PARAMETER SUM(GETS) SUM(GETMISSES) GETMISS_RATIO HIT_RATIO UPDATES
------------------------------------------ -------------- ------------- ---------- ----------
dc_qmc_cache_entries 1 1 100 0 0
dc_constraints 54 31 57.41 42.59 54
dc_tablespace_quotas 976 198 20.29 79.71 976
dc_files 539 32 5.94 94.06 3
dc_global_oids 564058 2459 .44 99.56 0
dc_histogram_defs 185645793 223703 .12 99.88 0
dc_objects 73470326 30375 .04 99.96 2228
dc_segments 112544251 50126 .04 99.96 2198
dc_sequences 7814295 1453 .02 99.98 7814291 www.2cto.com
关于dc_qmc_cache_entries为100%还不清楚,请大家指正。
十、优化Library cache
总原则尽可能使代码解析最小化
确保用户尽可能使用共享的SQL执行计划
为Librarycache分配更多的空间以避免淘汰最老的代码与执行计划
避免无效的再度解析(如Librarycache已经存在某个对象的解析,而该对象结构发生了变化)
避免Library cache中过多的碎片
为Library cache使用保留空间
锁定一些频繁使用的对象到Librarycache中,以避免LRU算法淘汰掉
排除较大的PL/SQL匿名块或对其进行拆分
对于共享服务器模式可以分配largepool给UGA,避免对共享池的争用
十一、调整shared_pool_size
1.监控对象的重载情况
SELECT NAMESPACE,
GETS,
GETHITS,
round(GETHITRATIO * 100, 2) gethit_ratio,
PINS,
PINHITS,
round(PINHITRATIO * 100, 2) pinhit_ratio,
RELOADS,
INVALIDATIONS
FROM V$LIBRARYCACHE; --考虑是否存在过多的reloads和invalidations
2.当库缓存的重载率大于零,应考虑增大