ORA-600[qesmaGetTblSeg1]错误分析

来源:这里教程网 时间:2026-03-03 16:46:05 作者:

数据库报错 Wed Jun 17 14:52:32 2020 Errors in file /u01/app/oracle/diag/rdbms/xxx1/trace/test1_ora_9448.trc  (incident=115553): ORA-00600: 内部错误代码 , 参数 : [qesmaGetTblSeg1], [2361], [0], [1], [0x0D99189C0], [0x0D99189F8], [1], [], [], [], [], [] Incident details in: /u01/app/oracle/diag/rdbms/xxx1/incident/incdir_115553/test1_ora_9448_i115553.trc Use ADRCI or Support Workbench to package the incident. .............................. Thu May 27 00:00:14 2021 Errors in file /u01/app/oracle/diag/rdbms/xxx1/trace/test1_ora_15681.trc  (incident=131505): ORA-00600: 内部错误代码 , 参数 : [qesmaGetTblSeg1], [2704], [0], [1], [0x0EC960070], [0x0EC9600A8], [1], [], [], [], [], [] Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Use ADRCI or Support Workbench to package the incident.2   查看相关trace文件 查看报 ORA-600错误的对象名称,发现都是同一张表,只是不同的分区: 在浏览 trace文件时,发现有大于当前时间的分区,其内还有数据。沟通应用,认为此事件为异常,引起的原因为终端设备时间不正确导致的。 根据如下查询,发现 2022 和2027年竟然有数据了 表分区 表分区中含有数据: 3 查看Oracle的官方文档 ORA-600 [qesmaGetTblSeg1] Raised by Insert Statement (Doc ID 1987590.1) CAUSE The issue matches unpublished Bug 17957017 - ADD MORE DIAGNOSTICS FOR ORA-600 [QESMAGETTBLSEG1]   The bug is fixed in:

·  12.2 (Future Release)

·  12.1.0.2 (Server Patch Set)

·  11.2.0.4 Bundle Patch 15 for Exadata Database (Jan 2015) NOTE: This is a marker bug for a diagnostic enhancement to produce more information for ORA-600 [qesmaGetTblSeg1] errors. This diagnostic has no impact other than to produce more output in the case of the above error. Please refer to: Note 17957017.8  - Bug 17957017 - Diagnostic enhancement to produce more information for ORA-600 [qesmaGetTblSeg1] errors SOLUTION To solve the issue, use any of below alternatives:

·  Upgrade to Oracle 12.1.0.2  

·  - OR -  

·  Apply interim  Patch 17957017 , if available for your platform and (PSU) patch level  

·  To check for conflicting patches, please use the MOS Patch Planner Tool

·  Please refer to

·  Note 1317012.1  - How To Use MOS Patch Planner To Check And Request The Conflict Patches?  

·  If no patch exists for your version, please contact Oracle Support for a backport request.   After the above, you can log a new SR with Oracle support in case the error reproduces. 查看某业务系统的补丁是否打上,发现是有的,如下: [oracle@test~]$ opatch lsinventory |grep 17957017 16613964, 17957017,   18098207, 18471685, 19730508, 18264060, 17754782###################### Bug 14252187  ORA-600 [qesmaGetTblSeg1] from deferred segment creation in RAC Description This bug is only relevant when using Real Application Clusters (RAC)With deferred segment creation turned on in a RAC configuration various segment or partition-related internal errors may be seen.   Rediscovery Notes  If you are on 11.2+ and see segment or partition-related    internal errors such as ORA-600[qesmagettblseg1] or     ORA-600[kkpo_rcinfo_defstg:objnotfound], you could be    hitting this problem.   Workaround  Avoid deferred segment creation.     eg: Run with DEFERRED_SEGMENT_CREATION=false   4  分析 ORA-600 [qesmaGetTblSeg1] 报错原因

此错误的真正原因为 Oracle 11.2.0.4 版本以后,修改了表分配空间的行为,即 11.2.0.4 以前,在数据库里面创建一个表,数据库同时会为此表分配一定的空间,用于数据插入。但 11.2.0.4 以后,创建一个表或分区,数据库不会对表及分区分配空间,直到真正有数据插入时才会对表及分区分配空间。为了避免由于延迟创建分区,可以通过修改数据库参数来调整数据库的行为,经查,某业务系统的数据库参数已经进行调整,即创建表及分区的同时,会分配对应的空间,参数如下:      既然数据库层面补丁已打,相关参数进行了调整,但为什么数据库有时报 ORA-600 [ q esmaGetTblSeg1] 错误,有时又不报此错误,没有任何的认为干预。经过查询,认为同业务有关系, TEST _USER. TEST _HIS   这个表是按日进行分区的,每天自动进行分区,但由于终端时间不对,比如终端时间为 2027 年的某一天,需要插入数据,数据库发现没有此分区,然后在创建此分区,并分配空间,就会再次触发 ORA-600 [qesmaGetTblSeg1]   错误,故认为此错误是由于业务系统导致的,同数据库没有关系。 解决方法    1 业务系统调整终端时间,使终端时间正常,不能将数据插入到未来的某一天,此 ORA-600 报错应该就可以解决。    2 业务系统调整业务系统代码,使用条件过滤,避免插入数据到未来的某一天。   3 将 TEST _USER. TEST _HIS表后续所有要使用的分区都提前创建好,可以避免此问题。但不建议使用此方法。

相关推荐