ITPub博客

首页 > 数据库 > Oracle > 查看 library cache 命中率

查看 library cache 命中率

原创 Oracle 作者:xingfei80 时间:2013-07-08 14:56:44 0 删除 编辑

转自:http://blog.csdn.net/robinson1988/article/details/4716814

SQL> desc v$librarycache
Name Null? Type
----------------------------------------- -------- ----------------------------
NAMESPACE VARCHAR2(15)
GETS NUMBER 可以理解为某个object解析的时候查找的次数(解析阶段)
GETHITS NUMBER get命中次数
GETHITRATIO NUMBER 这个值等于gethits/gets PINS NUMBER 某个object 解析过后被执行的次数(发生在执行阶段) PINHITS NUMBER pin命中次数 PINHITRATIO NUMBER 这个值等于pinhits/pins RELOADS NUMBER 某个object 解析过后被从新加载的次数(需要从新从磁盘读取object),也就是没有被缓存到library cache中,这个通常由于shared pool 过小 INVALIDATIONS NUMBER 某个对象无效,通常由于对象定义被更改,需要从新解析
DLM_LOCK_REQUESTS NUMBER
DLM_PIN_REQUESTS NUMBER
DLM_PIN_RELEASES NUMBER
DLM_INVALIDATION_REQUESTS NUMBER
DLM_INVALIDATIONS NUMBER

[@more@]

查看总的library cache pinhitratio 应该大于90%,最理想大于95%

SQL> select sum(pinhits)/sum(pins) pinhitratio from v$librarycache;

PINHITRATIO
-----------
.916570607

SQL> select sum(pins)/(sum(pins)+sum(reloads)) reloadhitratio from v$librarycache;

RELOADHITRATIO
--------------
.997046909

查看reloadhitratio 应该小于1%

SQL> select sum(reloads)/sum(pins) from v$librarycache;

SUM(RELOADS)/SUM(PINS)
----------------------
.002959248

查看各个类型的library cache ratio, 看pinhitratio 这一行

SQL> select namespace,pins pinhits ,pinhitratio from v$librarycache;

NAMESPACE PINHITS PINHITRATIO
--------------- ---------- -----------
SQL AREA 136089 .907935248
TABLE/PROCEDURE 54863 .917230192
BODY 11053 .988057541
TRIGGER 2064 .994670543
INDEX 239 .665271967
CLUSTER 4603 .996958505
OBJECT 0 1
PIPE 0 1
JAVA SOURCE 0 1
JAVA RESOURCE 0 1
JAVA DATA 0 1

11 rows selected.

查看当前 library cache 的大小

SQL> select sum(sharable_mem) from v$db_object_cache;

SUM(SHARABLE_MEM)
-----------------
20775388

查看剩余的 shared pool

SQL> select * from v$sgastat where name='free memory' and pool='shared pool';

POOL NAME BYTES
------------ -------------------------- ----------
shared pool free memory 86134880
ORACLE调优专家所推荐的长期运行的数据库的 library cache hitratio 最好应该在95%以上,sum(reloads)与sum(pins) 的比值应该小于 1%,如果pinhitratio 小于90%,或者reload ratio 大于1% ,而且shared pool 的free memory 很小或者为0,那么可以适当增加shared_pool的大小,检查应用程序代码效率,比如是否使用了绑定变量等等.

这里可以看出pinhitratio命中率小于95%,但是有低于1%的重载率,而且看到剩余的shared pool 有80多M,说明我的shared pool完全够用。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14663377/viewspace-1060680/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-14

  • 博文量
    102
  • 访问量
    492752