oracle 硬解析过高,过度硬解析导致share pool latch争用

数据库出现严重 latch 争用,原因在于硬解析过高。文章通过分析AWR报告,发现异常JOB和未绑定变量的SQL,提出通过优化代码、绑定变量等方式减少硬解析,以降低数据库性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库巡检过程中发现latch争用很厉害;

原因是硬解析过高;

TOP5等待:

dd06a1abc3fb84da465ff4eff32374f6.gif

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;

759d991476f95793a23442cb99972add.gif<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值