风哥教程

培训 . 交流 . 分享
Make progress together!

Oracle数据库出现出ORA-00600[6002]与[25027]报错处理

[复制链接]
内容发布:风哥| 发布时间:2014-1-26 10:37:35
Oracle数据库出现出ORA-00600[6002]报错处理


一套Oracle 10g RAC出现故障强行恢复后,日志出现ORA-00600[6002]与ORA-00600[25027]报错,详细日志如下:


Mon Jan 06 15:39:28 BEIST 2013
Errors in file /app/oracle/admin/TESTDZ/udump/TESTDZ2_ora_4063486.trc:
ORA-00600: internal error code, arguments: [6002], [0], [18], [2], [0], [], [],
[]
Mon Jan 06 15:39:32 BEIST 2013
Trace dumping is performing id=[cdmp_20140106153931]
ORA-00600: internal error code, arguments: [25027], [6], [0], [], [], [], [], []
查看trc文件后,获取重要信息如下:
Block header dump:  0x10c63714
Object id on Block? Y
seg/obj: 0xd4cf  csc: 0xc70.421afef9  itc: 2  flg: E  typ: 2 - INDEX
     brn: 0  bdba: 0x10c6350b ver: 0x01 opc: 0
     inc: 0  exflg: 0
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000


我们从官方和TRC报错来分析,ORA-00600 6002错误一般都与索引相关,具体内容是指:
Oracle试图去插入一个索引键值时,首先需要找到合适的位置,并且去进行相关校验,校验内容包括索引列数量、数据大小等,一旦发现不一致,则将出现ORA-600 6002错误


Oracle官方的解释如下:
Oracle was trying to insert a key and key data into a b*tree index.   
In order to do this, it had to first find the correct leaf block to   do the insert.   
Once the correct leaf block is retrieved, Oracle validates the block  by checking the data size and number of columns in the key.   
If there is a mismatch then ORA-600 [6002] is reported.

其主要的参数含义如下:
Arg [a] Number of bytes in keydata   
Arg Number of bytes in the index layer of the leaf header   
Arg [c] Number of columns in index search key structure   
Arg [d] Number of columns in the index layer fo the leaf header


所以如果遇到这个错误,首先应该找到出现问题的索引对象,可以尝试通过重建索引消除这个错误影响。
如下是跟踪文件中体现的出现错误的块头信息:

Block header dump:  0x10c63714
Object id on Block? Y
seg/obj: 0xd4cf  csc: 0xc70.421afef9  itc: 2  flg: E  typ: 2 - INDEX
     brn: 0  bdba: 0x10c6350b ver: 0x01 opc: 0
     inc: 0  exflg: 0

不过有时候也有数据表的报错,如下:
Block header dump:  0x0b429283
Object id on Block? Y
seg/obj: 0x1713a9  csc: 0xc70.423ecdb1  itc: 2  flg: -  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01


我们可以看到出现问题的对象号是d4cf,类型正是索引,如果是数据表呢,通过备份恢复或重建表进行恢复。我们以索引为例,通过数据库查询可以找到这个对象名称,通过重建索引即可解决


SQL>select object_name from dba_objects where object_id = to_number('d4cf','xxxxx');
OBJECT_NAME
--------------------------------------------------------------------------------
PK_SERVERVATIO20


SQL>alter index testdz_zsb.PK_SERVERVATIO20 rebuild online;


ORA-006006002】错误需要根据对象的不同进行分析,通常是可以通过索引重建解决的。有时候问题会出现在IOT对象上,可以通过备份数据,TRUNCATEINSERT回插记录解决。




上一篇:Oracle数据库出现出ORA-00600[qertbFetchByRowID]报错处理
下一篇:expdp备份时出现ORA-01555: snapshot too old: rollback segment number too small
专业提供Oracle/MySQL/NoSQL/Linux数据库培训与技术支持服务,QQ号:113257174
关注风哥教程微信公众号itpux_com  ,了解本站最新技术资料的分享.

欢迎加QQ群,提供超多高质量Oracle/Unix/Linux技术文档与视频教程的下载。

Oracle/MySQL/Linux群4-5:189070296  150201289  
Oracle/MySQL/Linux群6-8:244609803   522261684   522651731
备注:请勿重复加群,另请注明 from itpux
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • 大数据技术与应用入门培训教程(电子版下载
  • Oracle 12cR2 九大新功能全面曝光_详解云数
  • Oracle OCP认证考试IZ0-053题库共712题数据
  • MySQL5权威指南(第3版)PDF电子版下载
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • Oracle19c数据库发布与下载地址
快速回复 返回顶部 返回列表