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;