ORA-00600[17059]sql
ORA-00600[17059]错误大部分都是由于高版本致使,对于本库的分析:由于该库的 shared pool老化比较频繁,到我介入的时候,发现相关该类此sql已经不能找到,不能很是确定的找出来缘由,猜想可能缘由是:这个库(版本为11.1.0.6 FOR AIX)由于开发基本上没有绑定参数,设置cursor_sharing=force,这里5万多条的insert会自动转换为参数形式,由于每一个 insert参数对应的值长度区别较大,使得BIND_MISMATCH不匹配致使高版本现象严重,从而出现了该Bug 9689310.数据库
出错的sql:spa
select *
from ap_alarm_msg_t
where alarm_rule_id = :alarm_rule_id
and alarm_sub_type_id = :alarm_sub_type_id
and alarm_do_type = :alarm_do_type
and mail_to = :mail_to
and del_flag = 0
and instr(alarm_message, :alarm_message_start) > 0
and instr(alarm_message, :alarm_message_end) > 0开发
改正后sql:字符串
select *
from ap_alarm_msg_t
where alarm_rule_id = :alarm_rule_id
and alarm_sub_type_id = :alarm_sub_type_id
and alarm_do_type = :alarm_do_type
and mail_to = :mail_to
and del_flag = :del_flag
and instr(alarm_message, :alarm_message_start) > 0
and instr(alarm_message, :alarm_message_end) > 0select
错误分析:程序
一、数据库中del_flag是char(1)插入的参数是number方法
二、以前的参数是字符串拼接进去的,改正后是经过参数形式传入的数据
具体是哪一种缘由致使的须要进一步验证!升级
下面是网上找到的解决该问题的一些方法。
解决该问题 1.不要经过程序拼接sql出来,使用绑定参数形式 2.升级到相应新版本解决该问题 3.一次减小执行的sql数量,定时刷新shared pool[临时办法]