适用范围
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-




