2016-3-23接到一个客户支持,客户在升级了我们的K3/Cloud 之后在执行处置单保存的时候发生了以下错误:
错误编号: BOS_ExecuteNonQuery
错误信息: ORA-00600: internal error code, arguments: [rwoirw: check ret val], [], [],[], [], [], [], [], [], [], [], []
Sql语句: INSERT INTOTM_FA_ASSERTDEPR (FNUMBER, FOWNERORGID, FASSETTYPEID (此处省略若干字)
在网上和我们金蝶论坛上搜索之后,找到了很多解决方案,不过大部分帖子方法都无法执行生效,
经过多方求助和网上查询
然后我得到了
解决方案:
alter system set"_pred_move_around"=false
alter session set"_pred_move_around"=false
在oracle里面,属性_pred_move_around 的全名应该是 predicate move around
ORA-00600错误 是产生于 用select 创建临时表时候报错
个人理解就是 创建临时表时 数据的预移动(个人理解为分配空间,预插数据检测等)报错,
默认情况下,这个predicate move around 是开启的,
alter system set "_pred_move_around"=false
alter session set "_pred_move_around"=false
在会话和系统设置中关闭这个属性,则会跳过这一步,直接创建临时表
网上原文描述是:
A CTAS (Create table as select) operation undergoing predicatemove around
may fail during execution with an ORA-600 [rwoirw: check retval] Workaround Disable predicate move around before executing the CTAS.
eg:
alter session set "_pred_move_around"=FALSE;
在客户测试库执行之后就解决了,
事后重新再去网上搜索原因,发现这是oracle(11.2.0.4,11.2.0.3)两个版本存在的bug
官方给出的解决方案是打补丁
推荐阅读