一通电话把我叫醒
上周周末的一天清晨,应用的同事给我打了个电话,说周五晚上有个跑批的SQL,在周六凌晨卡住跑不动了,一直卡了四个多小时都跑过不去。而正常情况下只需要一分钟就能跑完。
打开应用发过来卡住的SQL语句,好家伙,是一个1000多行的INSERT语句,插入数据的表又是一个超级大宽表,有超过200列。
看来又是一个令人头疼的问题。😪
一个惊讶的发现
好吧,先试着定位到了这个INSERT语句的SQL_ID,马上来查查这个SQL最近三个月的执行计划。
果然不出所料,这个SQL最近俩月的的执行计划都是同一个执行计划A,但是在昨儿晚上突然变成了执行计划B。简单对比了一下两个执行计划,确实A比B要好。
由于白天还有别的业务批量要跑,当务之急是让卡住的INSERT语句能够跑过去。于是想着,能不能直接给绑定执行计划A?
但是当我检查视图dba_sql_profiles
时,却惊讶地发现这个SQL早在两个月前已经就绑定了执行计划A。
什么?原来绑定执行计划也可能没用!?😳
这里看看那里瞧瞧
为啥绑了执行计划,执行计划也还会