数据库巡检过程中发现latch争用很厉害;
原因是硬解析过高;
TOP5等待:
QQ截图20130918145534.jpg (35.56 KB, 下载次数: 21)
2013-9-18 14:55 上传
硬解析比例:
Parses:343.6038.49
Hard parses:301.4233.76
参数 CURSOR_SHARING 设置是EXACT;
在AWR中发现 两个异常JOB如下:
DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate; broken BOOLEAN := FALSE; BEGINrptdatacolletbytime('0000053464', 5, TRUNC((SYSDATE-1), 'HH24'), TRUNC(SYSDATE-1/288, 'MI')); SD_P_PreviewBusiDataCollect('0000053464', 10); SD_P_PreviewCallDataCollect('0000053464', 10); :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END;
在存储过程rptdatacolletbytime 中发现如下SQL:
----检验此时间段是否有业务数据,没有开始下一时段循环
strsql := 'select count(*) from '||v_tbl_name||' where dialbegintime between
TO_date(('''||to_char(beginTime,'yyyy-mm-dd hh24:mi:ss')||'''),''yyyy-mm-dd hh24:mi:ss'')
and TO_date(('''||to_char(endTime,'yyyy-mm-dd hh24:mi:ss')||'''),''yyyy-mm-dd hh24:mi:ss'')';
execute immediate strsql into ia07Count;
if(ia07Count=0) or (ia07Count is null) then
begin
goto nextloop;
end;
end if;
该怎么修改代码减少硬解析;上传完整AWR;
<