首页 > 其他分享 >ORA-00600 [13013],[5001]

ORA-00600 [13013],[5001]

时间:2023-06-18 11:03:47浏览次数:38  
标签:5001 00600 该表 TAB1 col 13013 默认值 where ID


故障现象:

Dump continued from file: /u01/app/oracle/diag/rdbms/test/test1/trace/test1_ora_50647.trc
ORA-00600: internal error code, arguments: [13013], [5001], [455035], [67227408], [31], [67227408], [17], [], [], [], [], []

报错SQL:

- update TEST a
-    set (a.A, a.B, a.C, a.A) =
-        (select b.A,
-                b.B,
-                b.C,
-                b.A
-           from TEST1 b
-          where a.A = :1
-            and a.B = b.B
-            and a.A = b.A
-            and trim(a.A) is not null
-            and instr(',' || :2 || ',', ',' || a.A || ',') > 0)
-  where exists
-  (select 1
-           from TEST2 c
-          where a.A = :3
-            and a.A = c.A
-            and a.A = c.A
-            and trim(a.A) is not null
-            and instr(',' || :4 || ',', ',' || a.A || ',') > 0)

某金融客户晚上跑批一个月出现三次该错误,前两次分析以为数据库坏块对表进行move 错误临时解决但是再次出现。
问题分析:
通过对报错代码转换

ORA-00600: internal error code, arguments: [13013], [5001], [455035], [67227408], [31], [67227408], [17], [], [], [], [], []

select dbms_utility.data_block_address_file(67227408) Rfile# ,dbms_utility.data_block_address_block(67227408) "Block#" from dual;

可以得到最终出问题的为表 TEST
排除坏块导致的问题需要做以下操作

- analyze table <owner>.<table name> validate structure cascade online ;

—正常无报错

报错核心函数 updThreePhaseExe 通过MOS查看到有不少BUG,发现有个BUG跟 _add_col_optim_enabled 相关。
通过以下SQL 确认该表是否使用该特性:

- select object_name, name
- from dba_objects, col$
- where bitand(col$.PROPERTY, 1073741824) = 1073741824
- and object_id = obj#

确认该表存在10几个使用了该特性的列并,但是使用了该特性未必会触发该BUG,客户希望找到触发的根源。
通过查看该表的数据,发现虽然列使用了_add_col_optim_enabled 特性但是该列中的数据不是默认值也就是被修改过,关于11G default not null 特性可以自行百度。
问题复现:
按照客户该业务逻辑以及表数据方式进行模拟测试

- CREATE TABLE TAB1 ( ID_NACE NUMBER(5) );
- insert into TAB1 values(0);
- ALTER TABLE TAB1 ADD (
-     ID_INDUSTRY  NUMBER(5) DEFAULT -1 NOT NULL
-   );
- ALTER TABLE TAB1 ADD (
-     ID_ind2  varchar2(1) DEFAULT 'U' NOT NULL);
- ALTER TABLE TAB1 ADD (err  varchar2(30) );
- insert into TAB1 values(1, 1, 'C',null); 
- insert into TAB1 values(2, 2, 'C',null); 
- drop table tab2;
- CREATE TABLE TAB2 (
-     ID_NACE      NUMBER(5),
-     ID_INDUSTRY  NUMBER(5)
-   );
- insert into TAB2 values(1, 3);
- commit;

- SQL>  update tab1
-   2   set err = 'xxxxx'
-   3   where id_ind2 = 'C'
-   4     and not exists (select 1 from tab2 where tab2.id_nace = tab1.id_nace and 
-   5   tab2.ID_INDUSTRY = tab1.ID_INDUSTRY);
-  update tab1
       *
ERROR at line 1:
ORA-00600: internal error code, arguments: [13013], [5001], [90537], [4290641],
[3], [4290641], [17], [], [], [], [], []

在测试环境复现出该问题(12c 未复现,11.2.0.4最新PSU依然复现)。
问题根源:使用了_add_col_optim_enabled特性对表增加有默认值的列之后,该列实际存储的又被更改过。
在对该表进行update/merge 时候如果where 条件中使用该列进行关联那么将会触发该BUG
触发条件:
1.<=11.2.0.4
2.针对某一张表增加有默认值的列,并且使用到了_add_col_optim_enabled特性
3.业务实际写入或者又去修改了该默认值
4.对该表进行update/merge 时候where 条件中有该列的关联
解决方案:
1.针对以后新增加的表可以关闭_add_col_optim_enabled 特性,但是关闭之后无法使用该特性针对大表增加有默认值的列需要注意,会比较慢。

alter system set “_add_col_optim_enabled”=false;


2.临时解决通过对该表重建,问题得以解决。注意move 表是无法解决因为还是依然使用,需要新创建一张表然后insert into,如果该表之间create 时候有默认值然后去insert 是不会触发该bug。
参考:
Bug 16086769 - ORA-600 [13011] ORA-600 [13013] when executing a DML if the WHERE clause includes an added column with a default value (Doc ID 16086769.8)

标签:5001,00600,该表,TAB1,col,13013,默认值,where,ID
From: https://blog.51cto.com/u_13482808/6507702

相关文章

  • ORA-00600[ktfs_upd_range-1]
    ORA-600[ktfs_upd_range-1]DuringTruncateTable(DocID2247478.1)HEATMAPSegmentSizeIsLargeInSYSAUXEvenWhenHeatmap=Off(DocID2024036.1)In12.2.0.1,ORA-600[kpdbSwitchPreRestore:Txn]CrashRACInstances(DocID2583951.1)Thefollowingerror......
  • ORA-00600: [rworupo.1], [34], [32]
    环境信息操作系统:windows2019ORACLE:11.2.0.1补丁情况:无故障现象手动收集用户统计信息时提示ora-00600错误,具体信息如下SQL>execdbms_stats.gather_schema_stats(ownname=>'CS',granularity=>'ALL',estimate_percent=>10,method_opt=>'forallindexedcolumn......
  • ORALCE的ora-00600错误诊断
       ORA-00600是Oracle数据库的内部错误,通常情况下需要联系Oracle技术支持来解决问题。但是,在某些情况下,可以通过使用_allow_resetlogs_corruption参数以及重建undo表空间的方式解决ORA-00600错误。本文将介绍ORA-00600错误的原因、解决方法以及如何使用_allow_resetlogs_corr......
  • 20230425001 - DataGridView绑定了数据之后, 再添加CheckBox列的解决方案
                 DataGridViewCheckBoxColumncheckBoxColumn=newDataGridViewCheckBoxColumn();           checkBoxColumn.Name="select";           checkBoxColumn.HeaderText="选择";           dgv_M.Columns.Inse......
  • 曼孚科技获ISO45001职业健康安全管理体系认证,标准化管理进入新阶段
    近日,经第三方专业认证机构全面、严苛审核,曼孚科技正式通过ISO45001职业健康安全管理体系认证,认证范围包括人工智能行业数据处理服务等领域。ISO45001职业健康安全管理体系是上世纪80年代后期,于国际上兴起的一种现代安全生产管理模式,它与ISO9001和ISO14001等管理体系一并称为后工......
  • 数据库报ORA-00600 [2252]错误
    同事运维的数据库出现了一个ORA-00600 [2252]错误,针对该问题简单记录下。1、alter日志信息:TueFeb2814:22:302023Errorsinfiled:\app\diag\rdbms\pubb\pubb\trac......
  • active code page: 65001 提示去除
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CommandProcessorPressWin+R.Type"regedit"andpress Enter.Navigatetothepath HKEY_LOCAL_MACHINE\SOFT......
  • 转 ORA-00600 [4194] 处理
    https://blog.csdn.net/renyanjie123/article/details/111239302ORA-00600[4194]处理 订阅专栏在某客户现场遇到一个看着很唬人的报错ORA600,遇到此报错很多人心......
  • ORA-00600 内部错误代码:
    发现对某个表进行操作时突然报改错(后面在其他生产环境也发现过其他表出现同样的报错),网上说是oracle11g本身的问题,不想动生产环境解决办法:导出数据,重新建表导入数据错误消......
  • 事件10841解决oracle 9i中JDBC Thin Driver ORA-00600 [ttcgcshnd-1]的异常
    文档课题:事件10841解决oracle9i中JDBCThinDriverORA-00600ttcgcshnd-1的异常.用thindriver连接Oracle9i时,出现exception,如下所示java.sql.SQLException:ORA-00600:......