判断和调整library cache,data dictionary cache,buffer cache性能

Oracle SGA是oracle的内存结构,存放着oracle通过oracle进程读写的内存数据。sga分为好多组件,比如shared pool,buffer cache,redo log buffer等等。shared pool又分为library cache,data dictionary cache. 

library cache是存sql语句及其分析结果的内存结构
data dictionary cache是存放数据字典的内存结构
buffer cache存的就是数据。
我们分别来看这3部分如何判断其性能和调优:
1)library cache
用如下sql判断其性能:
select l.namespace,l.GETHITRATIO,l.PINHITRATIO,l.reloads,l.invalidations from v$librarycache l;
   NAMESPACEGETHITRATIOPINHITRATIORELOADSINVALIDATIONS
1SQL AREA0.8290805731492060.975705036500957734995
2TABLE/PROCEDURE0.8292682926829270.95089283623608523210
3BODY0.9925385066353990.996592814899815450
4TRIGGER0.9763868065967020.987569551319995400
5INDEX0.510613207547170.757788161993769350
6CLUSTER0.9787234042553190.98562874251497100
7OBJECT1100
8PIPE1100
9JAVA SOURCE0.2666666666666670.33333333333333310
10JAVA RESOURCE0.2666666666666670.33333333333333310
11JAVA DATA1100
gethitratio是语法分析命中率,90%为好。
pinhitratio 是sql命中率,90%为好。
reloads因语法分析过期需要重新分析的次数,要小。
invalidations sql虽在,但已无效的次数,要小。
2)data dictionary cache
  用如下sql判断其性能:
  select 1-sum(getmisses)/sum(gets) from v$rowcache;
   1-SUM(GETMISSES)/SUM(GETS)
 0.970686883098906
这个值表示了数据字典内存命中率。这个数据在95%以上为好。
3)buffer cache
用如下sql判断其性能:
select 1 - ((physical.value - direct.value - lobs.value) / logical.value) "hitratio"
  from v$sysstat physical,
       v$sysstat direct,
       v$sysstat lobs,
       v$sysstat logical
 where physical.name = 'physical reads'
   and direct.name = 'physical reads direct'
   and lobs.name = 'physical reads direct (lob)'
   and logical.name = 'session logical reads';
 
10.87177594421064
 
注意(lob)前有个空格。
这时数据命中率,85%为好。
 
在Oracle 10g中,这些项如果有问题都要调整sga_target参数。
alter system set sga_target=XXM scope=both;
原文地址:https://www.cnblogs.com/future2012lg/p/3208780.html