oracle latch:row cache object,latch free案例处理

客户的系统在对3000人进行1个月排班的时候,系统执行后一直无法结束。
通过查看等待事件,是在等待latch:row cache object
cpu一个核的使用达到100%,
我们可以使用如下SQL检查row cache 是否高效。 pct_succ_gets 接近与100最好,如果接近于0,就说明需要优化。

SELECT parameter,
SUM(gets),
SUM(getmisses),
100 * SUM (gets-getmisses)/sum(gets)pct_succ_gets,
sum(modifications)updates
FROM VROWCACHE  
WHERE gets >0  
GROUP BYparameter;  
查看row cache objects 的具体信息:  
  SELECTaddr,  
        latch#,  
        child#,  
        level#,  
         name,  
         gets,  
        misses,  
        sleeps  
    FROMv
latch_children
WHEREname=’rowcache objects’ AND gets <>0
ORDER BYgets;
SELECT DISTINCTr.cache#,
r.parameter name,
r.TYPE,
r.subordinate#,
r.gets
FROMv$rowcache r
ORDER BY1, 4,5;

查看row cache objects具体包含的内容。

SET PAGES 1000
COLUMN cache# FORMAT 99999
COLUMN nameFORMAT a33
COLUMN latch# FORMAT 999999

SELECTDISTINCTs.kqrstcln latch#,
r.cache#,
r.parameter name,
r.TYPE,
r.subordinate#
FROMv rowcacher,x kqrst s
WHEREr.cache# =s.kqrstcid
ORDER BY1, 4,5;

通过查看share pool大小只有500m.sga有4g。将share pool 调整到1g,语句能快速执行。在10到15分钟内运行完成。

你可能感兴趣的:(sql优化)