关于 ORACLE 数据库报错:ORA-00600的解决方案
金蝶云社区-H4
H4
17人赞赏了该文章 1,569次浏览 未经作者许可,禁止转载编辑于2018年11月27日 09:33:24

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

     官方给出的解决方案是打补丁

     



赞 17