Welcome 微信登录

首页 / 数据库 / MySQL / ORA-00600: 内部错误代码,参数: [6122]

分析过程:
1、tjcw数据库后台alert告警大量出现如下的ora-00600错误告警
        Fri Jul 06 15:59:13 2012
        Errors in file f:Oracleadmin jcwudump jcw_ora_3200.trc:
        ORA-00600: 内部错误代码,参数: [6122], [0], [1], [0], [], [], [], []
       Recovery of Online Redo Log: Thread 1 Group 2 Seq 3588 Reading mem 0
       Mem# 0 errs 0: F:ORACLEORADATATJCWREDO02.LOG
2、从 f:oracleadmin jcwudump jcw_ora_3200.trc日志可以看到如下的信息。
     Block header dump:  0x0248f58c
       Object id on Block? Y
      seg/obj: 0x19d7e  csc: 0xbae.b4053409  itc: 120  flg: E  typ: 2 - INDEX
       brn: 0  bdba: 0x248f589 ver: 0x01
       inc: 0  exflg: 0
3、从oracle metalink的doc[ID 99300.1],可以看出ora-00600 [6122]和索引损坏有关。
4、从上面2,3两步基本上可以确认是索引损坏导致600错误。
5、现在需要证实是否真的是索引损坏导致的错误。
      A. 从seg/obj: 0x19d7e可以计算出这个Oracle的对象的object_id,因为是16机制,
           需要换算成10机制。
          0x19d7e=14+7*16+13*16*16+9*16*16*16+1*16*16*16*16=105854
      B. 找出是什么数据库对象。
          SQL> select owenr,object_name,object_type from dba_objects where     
                    object_id=105854;                                                                                  
          OWNER       OBJECT_NAME       OBJECT_TYPE                                         
            -----------          ---------------             ----------------------------------
          BDCWYB      SYS_EVENT_IDX_1   INDEX
     C. 这个索引存放在哪些Datafile上面。
          SQL>select distinct FILE_ID from dba_extents where wner="BDCWYB" and
            segment_name="SYS_EVENT_IDX_1";
         FILE_ID
           ----------
            9        
       SQL> select file_name from dba_data_files where file_id=9;     
           FILE_NAME                                                      
          ---------------------------------------------------------------
          F:ORACLEORADATATJCWUSERS01.DBF  
    D. 是用Oracle dbv工具测试user01.dbf是否真的存在坏块. 从失败的页总数
        (索引):1再次确认存在索引坏块.                                                       
      C: >dbv file=F:ORACLEORADATATJCWUSERS01.DBF
             blocksize=8192                                                                                           
       DBVERIFY: Release 9.2.0.1.0 - Production on 星期五 7月 6 15:46:23   
        2012                                          
       Copyright (c) 1982, 2002, Oracle Corporation.  All rights  
     reserved.                                                                                                                               
      DBVERIFY - 验证正在开始 : FILE =   
       F:ORACLEORADATATJCWUSERS01.DBF                              
      Block Checking: DBA = 38335884, Block Type = KTB-managed data 
      block                              
    **** actual rows locked by itl 1  = 1 != # in trans. header = 2                                  
     ---- end index block validation                                                                  
      页 587148 失败,校验代码为 6401                                                                                                                                                                  
      DBVERIFY - 验证完成                                                                              
      检查的页总数         :589600                                                                    
      处理的页总数(数据):455602                                                                     
      失败的页总数(数据):0                                                                          
      处理的页总数(索引):113755                                                                     
      失败的页总数(索引):1                                                                          
      处理的页总数(其它):12760                                                                      
      处理的总页数 (段)  : 0                                                                           
      失败的总页数 (段)  : 0                                                                           
      空的页总数            :7483                                                                     
     标记为损坏的总页数:0                                                                            
    汇入的页总数           :0  
6、从上面的分析得知,确实是索引坏块导致的600错误,故需要重建索引,消除600告警.
处理步骤:
1. 从上面的分析得知确实是索引坏块导致的600错误,现在重建索引,不能使用rebuild index,因为索引损坏的部分是索引段头,rebuild index会报如下的错误。
      SQL> alter index BDCWYB.SYS_EVENT_IDX_1 
              rebuild;                                                                                         
    alter index BDCWYB.SYS_EVENT_IDX_1 rebuild         c                
*                                                                  
    ERROR 位于第 1 行:                                                 
   ORA-00600: 内部错误代码,参数: [6122], [0], [1], [0], [], [], [], []
    drop index BDCWYB.SYS_EVENT_IDX_1;
    create index BDCWYB.SYS_EVENT_IDX_1 on BDCWYB.SYS_EVENT(EVT_GUID) 
    tablespace users;
2. 索引重建好了之后之后,再次检查是否还存在坏块,现在无坏块。
       C:>dbv file=F:ORACLEORADATATJCWUSERS01.DBF blocksize=8192
     DBVERIFY: Release 9.2.0.1.0 - Production on 星期五 7月 6 16:35:38 2012
     Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     DBVERIFY - 验证正在开始 : FILE = F:ORACLEORADATATJCWUSERS01.DBF
    DBVERIFY - 验证完成
      检查的页总数         :590720
      处理的页总数(数据):455602
      失败的页总数(数据):0
      处理的页总数(索引):114951
      失败的页总数(索引):0
      处理的页总数(其它):12760
      处理的总页数 (段)  : 0
      失败的总页数 (段)  : 0
      空的页总数            :7407
      标记为损坏的总页数:0
      汇入的页总数           :0Oracle flashbackup基础知识Oracle中诊断阻塞session的方法 blocking error相关资讯      Oracle错误代码 
  • Oracle错误代码大全  (02/16/2015 21:31:57)
  • Oracle中登陆时报ORA-28000: the   (03/06/2013 20:06:23)
  • Oracle 11g startup时报ORA-03113  (02/21/2013 17:25:55)
  • Oracle Grid Control OUI-25031错  (03/09/2013 09:01:36)
  • ORA-04091:触发器/函数不能读  (02/25/2013 08:28:13)
  • Oracle错误 ORA-12514 解决方法  (02/18/2013 08:50:10)
本文评论 查看全部评论 (0)
表情: 姓名: 字数