暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle开启supplemental logging后数据库报ORA-600 [6749]

原创 Xiaofei Huangfu 2025-09-15
283

适用范围
Oracle Database 12.2.0.1

问题概述
Oracle 数据库开启supplemental logging后,RAC的2个节点都报ORA-600 [6749],应用的一些功能不能正常操作,对业务产生了影响。

问题原因
该数据库中业务用户有多张表名的长度,字段名的超过30个字符。开启附加日志后触发了Bug 25319173。
解决方案
一、临时解决方案
1、应急处理方式。关闭supplemental 功能。
2、对超过30个字符的表,字段进行调整。使其长度小于30个字符。(这个方案需要开发配合,如果涉及表比较多,调整的内容也较多)。
二、长远解决方案
1、择机应用Patch 25319173补丁。
2、数据库升级到19c,建议19.28

综合来看,方案在12.2打补丁是最经济的。从长远来看,采用将数据库升级到19c。
分析过程:
1、数据库alert日志

LOGMINER: Begin mining logfile for session -2146257918 thread 2 sequence 25961, +DATA/2_25961_990890806.arc
2025-09-15T09:28:37.350466+08:00
Errors in file 
ORA-00600: internal error code, arguments: [6749], [6], [181397459], [28], [6], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/xfdb/xfdb2/incident/incdir_88569/xfdb2_ora_61491_i65564.trc

从alert文件中可以看到正常使用LOGMINER,在2025-09-15T09:28触发了ORA-00600[6749]
2、trc日志

...
[TOC00000]
Jump to table of contents
Dump continued from file: /u01/app/oracle/diag/rdbms/xfdb/xfdb2/incident/incdir_88569/xfdb2_ora_61491_i65564.trc
[TOC00001]
ORA-00600: internal error code, arguments: [6749], [6], [181397457], [26], [6], [], [], [], [], [], [], []

[TOC00001-END]
[TOC00002]
========= Dump for incident 89089 (ORA 600 [6749]) ========
*** 2025-09-15T10:44:10.174845+08:00
dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
[TOC00003]
----- Current SQL Statement for this session (sql_id=f4tr655cktx1f) -----
DELETE FROM TB05_ABCD_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX WHERE XXX = :1 AND XXX = :2
[TOC00003-END]

从trc文件看到delete TB05_ABCD_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX表时触发了ORA-600 [6749]。
3、确认对象

SQL> select DBMS_UTILITY.data_block_address_file(181397457) "file#",DBMS_UTILITY.data_block_address_block (181397457) "block#" from dual; file# block# ---------- ---------- 26 1032427 SQL> select * from dba_extents where 1032427 between block_id and block_id + blocks and file_id=26; OWNER SEGMENT_NAME SEGMENT_TYPE ------- ------------------- ------------ XF TB05_ABCD_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX TABLE

根据DBMS_UTILITY.data_block_address_file,得到了数据文件号和block#,根据file_id和block# 在dba_extents 得到了对象名是XF用户下的TB05_ABCD_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX 表,这个结果与trc文件一致。
4、检查超过30个字符对象语句
–表名长度大于30个字符

col OWNER for a15 col table_name for a50 col LENGTH(TRIM(table_name)) for 999 SELECT owner,table_name, LENGTH(TRIM(table_name)) FROM dba_tables WHERE LENGTH(TRIM(table_name)) >30 ORDER BY LENGTH(TRIM(table_name)) DESC; --索引名长度大于30个字符 col OWNER for a15 col TABLE_NAME for a50 col INDEX_NAME for a50 col LENGTH(TRIM(INDEX_NAME)) for 999 select OWNER,TABLE_NAME,INDEX_NAME,LENGTH(TRIM(INDEX_NAME)) from dba_indexes where LENGTH(TRIM(INDEX_NAME))>30 ORDER BY LENGTH(TRIM(INDEX_NAME)) DESC; --列名长度大于30个字符 col OWNER for a15 col TABLE_NAME for a30 col COLUMN_NAME for a50 col LENGTH(TRIM(COLUMN_NAME)) for 999 SELECT OWNER, TABLE_NAME,COLUMN_NAME, LENGTH(TRIM(COLUMN_NAME)) FROM dba_tab_columns where LENGTH(TRIM(COLUMN_NAME))>30 ORDER BY LENGTH(TRIM(COLUMN_NAME)) DESC;

为确认影响范围,建议开启附加日志前提前检查数据库表名,索引名,字段名称超过30个字符的对象。
-the end-

最后修改时间:2025-09-17 09:01:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论