cursor_sharing引发的ORA-00600错误


主机:IBM S85
主要硬件:6 CPU+8GB内存
系统:AIX5.2
补丁:ML04
数据库:Oracle 9.2.0.4
中间件:BEA Tuxedo 8.1
该系统属于新oltp类金融系统,上线前性能压力测试表现良好,结果上线以后确实表现不错,但是日志文件里每隔10分钟就报:
ORA-00600: internal error code, arguments: [736], [7], [0], [128], [128], [], [], []
在这节骨眼上碰到bug,nnd真是衰就一个字。
客户方面和公司的压力像山洪爆发一样涌了过来,我一面解释说属于正常现象,不用大惊小怪,一边迅速搜集信息.

用宾馆里的烂电话线上网还很不稳定,一头的火气没处发泄。
一番疯狂的查找,很快我知道了问题是由于自己的自作聪明,当初为了提高国内应用普遍不使用绑定变量的问题,加了一个参数造成的:

cursor_sharing=force
这个参数我以前使用起来都比较正常,而且以为这个oracle版本比较高以为更加放心,结果偏偏就是在这不能用,估计某个update/insert语句引发了这个bug。nnd

这个应用真让我费解,想帮它用帮定变量提高点效率,结果还不领情给我来个ora600。。。。。。
迫于压力我赶快把cursor_sharing=force注释掉用默认的cursor_sharing=exact

问题总算给解决了。但是不甘心,仔细翻了翻9i的文档,建议用cursor_sharing=similar

哈哈,这下两全其美,大部分sql都用了绑定变量,ora-600的错误也不再报了。
[@more@]

相关内容