1、row cache objects latch包含多个children latch

select child#, gets, misses, sleeps 

 from v$latch_children 

 where name='row cache objects' 

 order by 1;          

 输出结果: 

 CHILD#       GETS        MISSES     SLEEPS 

 -------------- -------------- --------------- ---------- 

      (略) 

          7       24430682      14976          4 

      ( 略) 


 2、通过v$fixed_view_definition比对v$rowcache和x$kqrst 


 v$rowcache             x$kqrst                                       描述 

  -----------------    -----------------------------------       ------------------------ 

  CACHE#                KQRSTCID                               ROWCACHE ID编号 

  TYPE                      decode(KQRSTTYP,1, 

                                  'PARENT','SUBORDINATE')   rowcache类型 

  SUBORDINATE#  decode(KQRSTTYP,2, 

                                   KQRSTSNO,null),                    subordinate#编号 

  PARAMETER          KQRSTTXT                               参数名称,其决定 

                                                                                        rowcache记录数量 

  COUNT                    KQRSTCSZ                              在cache中各个参数的记录数 

  USAGE                     KQRSTUSG,                            记录的有效数 

  FIXED                        KQRSTFCS                             被修复的记录数 

  GETS                        KQRSTGRQ,                             数据对象请求总数量 

  GETMISSES            KQRSTGMI,                               数据对象请求miss数量 

  SCANS                     KQRSTSRQ,                             scan请求数量 

  SCANMISSES          KQRSTSMI,                              scan失败次数 

  SCANCOMPLETES KQRSTSCO,                           SUBORDINATE记录列表,完全 

                                                                                         scan扫描次数列表 

  MODIFICATIONS      KQRSTMRQ,                           inserts, delete, update次数 

  FLUSHES                  KQRSTMFL,                            flush到磁盘的次数 

  DLM_REQUESTS     KQRSTILR,                             DLM请求次数 

  DLM_CONFLICTS     KQRSTIFR,                             DLM冲突次数 

  DLM_RELEASES       KQRSTISR                             DLM释放次数 

                                         
KQRSTCLN                           latch编号 

                                         KQRSTOSZ                            未知 

 KQRSTCLN对应child#,所以我们能知道,一个或多个child#管理单个row cache 


 3、查看每个child#信息 


 select  kqrstcln child#,  kqrsttxt RowCacheName from x$kqrst 

 order by 1; 


 LD# ROWCACHENAME 

 ---------- -------------------------------- 

          略 

          7 dc_users 

          7 dc_users 

          7 dc_users 

          7 dc_users 

 所以我们知道row cache objects latch的child#7是管理dc_users 


 4、如果出现latch出现sleeps值比较大,则可以通过x$kqrsts中找出row cachename,然后结合查看miss的位置,大概定位是row cache latch竞争原因 


 select "WHERE", sleep_count, location 

 from v$latch_misses 

 where parent_name='row cache objects' 

 and sleep_count>0;