ORA-00600[17059]错误

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) > 0
select

错误分析:程序

一、数据库中del_flag是char(1)插入的参数是number方法

二、以前的参数是字符串拼接进去的,改正后是经过参数形式传入的数据

具体是哪一种缘由致使的须要进一步验证!升级

下面是网上找到的解决该问题的一些方法。

解决该问题 1.不要经过程序拼接sql出来,使用绑定参数形式 2.升级到相应新版本解决该问题 3.一次减小执行的sql数量,定时刷新shared pool[临时办法]

相关文章
相关标签/搜索