适用范围 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 999SELECT owner,table_name, LENGTH(TRIM(table_name)) FROM dba_tables WHERE LENGTH(TRIM(table_name)) >30ORDER 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))>30ORDER 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))>30ORDER BY LENGTH(TRIM(COLUMN_NAME)) DESC;
为确认影响范围,建议开启附加日志前提前检查数据库表名,索引名,字段名称超过30个字符的对象。 -the end-
------------------------------------------------------------------------------------------------------------------------------------
**MyBologs:**
https://www.myhfxf.com
https://www.xiaofeihuangfu.com
CSDN: https://blog.csdn.net/xfhuangfu
ITPUB: https://blog.itpub.net/28373936/
微信公众号:xfhuangfu
------------------------------------------------------------------------------------------------------------------------------------
