IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ORA-600 kccpb_sanity_check_2故障恢复

    惜分飞发表于 2015-07-29 14:28:33
    love 0

    联系:手机(13429648788) QQ(107644445)

    标题:ORA-600 kccpb_sanity_check_2故障恢复

    作者:惜分飞©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

    今天是有人在淘宝旺旺上找我,需要oracle数据库恢复支持
    wangwang


    远程登录上去一看发现数据库mount的时候报ORA-600[kccpb_sanity_check_2]错误

    C:\Documents and Settings\Administrator>sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jul 29 16:23:18 2015
    
    Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
    With the Partitioning, OLAP and Data Mining options
    
    SQL> alter database mount;
    alter database mount
    *
    ERROR at line 1:
    ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [14169],
    [14160], [0x0], [], [], [], []
    

    尝试重建控制文件

    SQL> shutdown immediate;
    ORA-01507: database not mounted
    
    
    ORACLE instance shut down.
    SQL> startup pfile='D:\database\m104\pfile\init.ora' nomount
    ORACLE instance started.
    
    Total System Global Area  444596224 bytes
    Fixed Size                  1291072 bytes
    Variable Size             155192512 bytes
    Database Buffers          281018368 bytes
    Redo Buffers                7094272 bytes
    
    SQL> SHOW PARAMETER CONT;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_file_record_keep_time        integer     7
    control_files                        string      D:\DATABASE\M104\CTRL\CONTROL0
                                                     2.CTL
    global_context_pool_size             string
    SQL> ALTER DATABASE MOUNT;
    ALTER DATABASE MOUNT
    *
    ERROR at line 1:
    ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [14169],
    [14160], [0x0], [], [], [], []
    
    
    SQL>
    SQL> CREATE CONTROLFILE REUSE DATABASE "m104_db" NORESETLOGS  FORCE LOGGING NOAR
    CHIVELOG
      2      MAXLOGFILES 16
      3      MAXLOGMEMBERS 3
      4      MAXDATAFILES 100
      5      MAXINSTANCES 8
      6      MAXLOGHISTORY 2921
      7  LOGFILE
      8    GROUP 1 'D:\database\m104\log\redo01.log'  SIZE 51200K,
      9    GROUP 2 'D:\database\m104\log\redo02.log'  SIZE 51200K,
     10    GROUP 3 'D:\database\m104\log\redo03.log'  SIZE 51200K
     11  DATAFILE
     12    'd:\database\m104\data\system01.dbf',
     13    'd:\database\m104\data\sysaux01.dbf',
     14    'd:\database\m104\data\USERS01.DBF',
     15    'd:\database\m104\data\UNDOTBS01.DBF',
     16    'd:\database\m104\data\INDX01.DBF'
     17  CHARACTER SET WE8ISO8859P1
     18  ;
    CREATE CONTROLFILE REUSE DATABASE "m104_db" NORESETLOGS  FORCE LOGGING NOARCHIVE
    LOG
    *
    ERROR at line 1:
    ORA-01503: CREATE CONTROLFILE failed
    ORA-00600: internal error code, arguments: [kccsga_update_ckpt_4], [1], [8],
    [], [], [], [], []
    
    SQL>
    SQL> CREATE CONTROLFILE REUSE DATABASE "m104_db" RESETLOGS  FORCE LOGGING NOARCH
    IVELOG
      2      MAXLOGFILES 16
      3      MAXLOGMEMBERS 3
      4      MAXDATAFILES 100
      5      MAXINSTANCES 8
      6      MAXLOGHISTORY 2921
      7  LOGFILE
      8    GROUP 1 'D:\database\m104\log\redo01.log'  SIZE 51200K,
      9    GROUP 2 'D:\database\m104\log\redo02.log'  SIZE 51200K,
     10    GROUP 3 'D:\database\m104\log\redo03.log'  SIZE 51200K
     11  DATAFILE
     12    'd:\database\m104\data\system01.dbf',
     13    'd:\database\m104\data\sysaux01.dbf',
     14    'd:\database\m104\data\USERS01.DBF',
     15    'd:\database\m104\data\UNDOTBS01.DBF',
     16    'd:\database\m104\data\INDX01.DBF'
     17  CHARACTER SET WE8ISO8859P1
     18  ;
    CREATE CONTROLFILE REUSE DATABASE "m104_db" RESETLOGS  FORCE LOGGING NOARCHIVELO
    G
    *
    ERROR at line 1:
    ORA-01503: CREATE CONTROLFILE failed
    ORA-00600: internal error code, arguments: [kccsga_update_ckpt_4], [1], [8],
    [], [], [], [], []
    

    无论是使用noresetlogs还是resetlogs,重建控制文件都报ORA-600[kccsga_update_ckpt_4]错误.比较奇怪,无解指定控制文件新名称重建试试看

    修改控制文件路径

    SQL> SHUTDOWN ABORT
    ORACLE instance shut down.
    SQL> startup pfile='D:\database\m104\pfile\init.ora' nomount
    ORACLE instance started.
    
    Total System Global Area  444596224 bytes
    Fixed Size                  1291072 bytes
    Variable Size             155192512 bytes
    Database Buffers          281018368 bytes
    Redo Buffers                7094272 bytes
    SQL> SHOW PARAMETER CONT;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_file_record_keep_time        integer     7
    control_files                        string      D:\DATABASE\M104\CTRL\CONTROL0
                                                     4.CTL
    global_context_pool_size             string
    SQL> CREATE CONTROLFILE REUSE DATABASE "m104_db" RESETLOGS  FORCE LOGGING NOARCH
    IVELOG
      2      MAXLOGFILES 16
      3      MAXLOGMEMBERS 3
      4      MAXDATAFILES 100
      5      MAXINSTANCES 8
      6      MAXLOGHISTORY 2921
      7  LOGFILE
      8    GROUP 1 'D:\database\m104\log\redo01.log'  SIZE 51200K,
      9    GROUP 2 'D:\database\m104\log\redo02.log'  SIZE 51200K,
     10    GROUP 3 'D:\database\m104\log\redo03.log'  SIZE 51200K
     11  DATAFILE
     12    'd:\database\m104\data\system01.dbf',
     13    'd:\database\m104\data\sysaux01.dbf',
     14    'd:\database\m104\data\USERS01.DBF',
     15    'd:\database\m104\data\UNDOTBS01.DBF',
     16    'd:\database\m104\data\INDX01.DBF'
     17  CHARACTER SET WE8ISO8859P1
     18  ;
    
    Control file created.
    

    使用新的控制文件位置,这次终于数据库重建控制文件成功
    尝试指定redo进行恢复,数据库正常打开

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
    ORA-00279: change 3643108240801 generated at 07/26/2015 20:15:22 needed for
    thread 1
    ORA-00289: suggestion :
    D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00567_0866390669.001
    ORA-00280: change 3643108240801 for thread 1 is in sequence #567
    
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    D:\database\m104\log\redo01.log
    ORA-00310: archived log contains sequence 566; sequence 567 required
    ORA-00334: archived log: 'D:\DATABASE\M104\LOG\REDO01.LOG'
    
    
    ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
    ORA-01194: file 1 needs more recovery to be consistent
    ORA-01110: data file 1: 'D:\DATABASE\M104\DATA\SYSTEM01.DBF'
    
    
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
    ORA-00279: change 3643108240801 generated at 07/26/2015 20:15:22 needed for
    thread 1
    ORA-00289: suggestion :
    D:\ORACLE\PRODUCT\10.2.0\DB_1\RDBMS\ARC00567_0866390669.001
    ORA-00280: change 3643108240801 for thread 1 is in sequence #567
    
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    D:\database\m104\log\redo02.log
    Log applied.
    Media recovery complete.
    SQL> ALTER DATABASE OPEN RESETLOGS;
    
    Database altered.
    

    数据库恢复完成。整个数据库恢复比较简单,但是注意这里的ORA-600[kccsga_update_ckpt_4]通过修改控制文件路径规避,具体原因待查。

    知识点补充:ORA-600 [kccpb_sanity_check_2] [a] [b] {c}

    VERSIONS:
      Versions 10.2 to 11.2
    
    DESCRIPTION:
    
      This internal error is raised when the sequence number (seq#) of the
      current block of the controlfile is greater than the seq# in the controlfile header.
    
      The header value should always be equal to, or greater than the value
      held in the control file block(s).
    
      This extra check was introduced in Oracle 10gR2 to detect lost writes
      or stale reads to the header.
    
    ARGUMENTS:
      Arg [a] seq# in control block header.
      Arg [b] seq# in the control file header.
      Arg {c} 
    
    • 创建控制文件出现ORA-01565 ORA-27041 OSD-04002
    • 创建控制文件遭遇ORA-600 kccscf_1
    • 数据库恢复遭遇ORA-00600[3705]
    • oracle数据库复制
    • ORA-01207/ORA-00338恢复
    • 重建控制文件
    • 恢复备份控制文件避免resetlogs方式打开数据库
    • 清除离线数据文件记录
    • 当前联机日志损坏恢复
    • ORACLE 12C 控制文件异常恢复
    • 记录8.0.5数据库恢复过程
    • ORACLE 8.0.5 ORA-01207故障恢复


沪ICP备19023445号-2号
友情链接