• 查看 library cache 命中率


    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

    查看总的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完全够用。

  • 相关阅读:
    mat工具记录一次full gc的过程
    2021年官网下载各个版本JDK最全版与官网查阅方法
    如何用vmkping命令调试vsphere环境中的VMkernel网络连接(ISCSI 开启巨帧)
    vsphere 虚拟机的迁移,冷迁移,vmotion(热迁移)
    VMkernel 级别的 TCP/IP 堆栈解释
    Ubuntu/Linux 开机运行指定的命令/自动运行命令
    桌面信息软件Desktop Info配置
    Windows10下插入USB串口设备后鼠标跳屏问题——Microsoft Serial Ballpoint
    Windows桌面配置常用软件总结
    安装Linux双系统取消快速启动,为什么在双启动时禁用Windows 8上的快速启动?
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330700.html
Copyright © 2020-2023  润新知