--今天例行检查数据库的时候发现有两个库都报了ORA-00600: internal error code,arguments: [kole_t2u], [34], [], [], [], [], [], []的错。
--通常ora-600的错误都是oracle内部的bug引起的,安全起见还是查了一下
--参考资料:http://blog.chinaunix.net/uid-20276248-id-3198915.html
--问题原因:
oracle的解释是:对于lob字段的字符处理出现问题。
--出错的地方:
从trace文件中可以看出,出错的程序是
image: oracle@cisdb2 (m000)
image: oracle@DBServer1 (m000)
是mmon的slave进程,mmon是数据库复制awr和ash报告等的维护采样工作,所以是在这期间出的问题
--具体sql:
从trace 文件的current sql部分可以看到,两个错误分别是在插入
wrh$_sql_plan 和 wrh$_sqltext 表的时候出错,
经查验得知,两个表均存在lob对象字段。与猜测的一致
--trace文件1
Unix process pid: 1200210, image: oracle@cisdb2 (m000)
*** ACTION NAME:(Auto-Flush Slave Action) 2014-08-2518:01:10.858
*** MODULE NAME:(MMON_SLAVE) 2014-08-25 18:01:10.858
*** SERVICE NAME:(SYS$BACKGROUND) 2014-08-2518:01:10.858
*** SESSION ID:(6335.61932) 2014-08-25 18:01:10.858
*** 2014-08-25 18:01:10.858
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kole_t2u], [34],[], [], [], [], [], []
Current SQL statement for this session:
INSERT INTO wrh$_sql_plan sp
--trace文件2
Unix process pid: 446676, image: oracle@DBServer1 (m000)
*** ACTION NAME:(Auto-Flush Slave Action) 2014-08-2521:00:28.216
*** MODULE NAME:(MMON_SLAVE) 2014-08-25 21:00:28.216
*** SERVICE NAME:(SYS$BACKGROUND) 2014-08-2521:00:28.216
*** SESSION ID:(5440.1674) 2014-08-25 21:00:28.216
*** 2014-08-25 21:00:28.216
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kole_t2u], [34],[], [], [], [], [], []
Current SQL statement for this session:
INSERT INTO wrh$_sqltext
--原因分析:
该错误对应 bug 5017909
当sql的第一千个字节刚好是中文时,clob字段会包含multibytecodepoints,从而触发该600错误
不过这个错误不影响应用以及sql的执行,只是对awr或者V$sql相关的视图有些影响
--解决方法:
修改程序代码,把第一千个字节刚好是中文的sql修改掉
或者升级oracle,该BUG在10.2.0.4 及以后版本的patchset中修复