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

    异常断电数据库恢复-从ORA-600 2131到ORA-08102: 未找到索引关键字, 对象号 39

    惜分飞发表于 2024-06-05 11:22:22
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:异常断电数据库恢复-从ORA-600 2131到ORA-08102: 未找到索引关键字, 对象号 39

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    数据库启动报ORA-600 2131,以前遇到过类似问题:ORA-600 2131故障处理

    SQL> alter database mount;
    alter database mount
    *
    第 1 行出现错误:
    ORA-00600: ??????, ??: [2131], [9], [8], [], [], [], [], [], [], [], [], []
    
    Tue Jun 04 14:12:18 2024
    RECO started with pid=15, OS id=3244 
    Tue Jun 04 14:12:18 2024
    MMON started with pid=16, OS id=3256 
    Tue Jun 04 14:12:18 2024
    MMNL started with pid=17, OS id=3432 
    starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
    starting up 1 shared server(s) ...
    ORACLE_BASE from environment = E:\app\Administrator
    Tue Jun 04 14:12:22 2024
    alter database mount exclusive
    Errors in file E:\APP\ADMINISTRATOR\diag\rdbms\XFF\XFF\trace\XFF_ora_2536.trc  (incident=427583):
    ORA-00600: ??????, ??: [2131], [9], [8], [], [], [], [], [], [], [], [], []
    Tue Jun 04 14:12:28 2024
    Use ADRCI or Support Workbench to package the incident.
    See Note 411.1 at My Oracle Support for error and packaging details.
    ORA-600 signalled during: alter database mount exclusive...
    

    重建ctl,然后重试recover 数据库,报ORA-600 kdourp_inorder2和ORA-600 3020错误,这些错误本质都是由于redo信息和block信息不匹配导致

    SQL> recover datafile 1;
    ORA-00283: 恢复会话因错误而取消
    ORA-10562: Error occurred while applying redo to data block (file# 1, block# 74805)
    ORA-10564: tablespace SYSTEM
    ORA-01110: 数据文件 1: 'E:\ORADATA\XFF\SYSTEM01.DBF'
    ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 8
    ORA-00600: 内部错误代码, 参数: [kdourp_inorder2], [16], [3], [0], [108], [], [], [], [], [], [], []
    
    
    SQL> recover datafile 7;
    ORA-00283: 恢复会话因错误而取消
    ORA-00600: 内部错误代码, 参数: [3020], [7], [385], [29360513], [], [], [], [], [], [], [], []
    ORA-10567: Redo is inconsistent with data block (file# 7, block# 385, file offset is 3153920 bytes)
    ORA-10564: tablespace UNDOTBS2
    ORA-01110: 数据文件 7: 'E:\ORADATA\XFF\UNDOTBS2.DBF'
    ORA-10560: block type 'KTU UNDO BLOCK'
    

    通过屏蔽一致性,修改文件头scn,强制打开数据库

    SQL> recover database until cancel;
    ORA-00279: 更改 56782359 (在 06/04/2024 14:00:36 生成) 对于线程 1 是必需的
    ORA-00289: 建议: E:\APP\ARCHIVELOG\ARC0000005415_1165094245.0001
    ORA-00280: 更改 56782359 (用于线程 1) 在序列 #5415 中
    
    
    指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
    ORA-01194: 文件 1 需要更多的恢复来保持一致性
    ORA-01110: 数据文件 1: 'E:\ORADATA\XFF\SYSTEM01.DBF'
    
    
    ORA-01112: 未启动介质恢复
    
    
    SQL> alter database open resetlogs;
    
    数据库已更改。
    

    尝试导出数据报ORA-08102,导致数据库无法正常导出

    C:\Users\Administrator>expdp "'/ as sysdba'" full=y dumpfile=full_20240604_%U.dmp DIRECTORY=expdp_dir 
    logfile=full_20240604.log parallel=2 EXCLUDE=STATISTICS,AUDIT
    
    Export: Release 11.2.0.4.0 - Production on 星期二 6月 4 18:40:26 2024
    
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-31626: 作业不存在
    ORA-31633: 无法创建主表 "SYS.SYS_EXPORT_FULL_05"
    ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: 在 "SYS.KUPV$FT", line 1038
    ORA-08102: 未找到索引关键字, 对象号 39, 文件 1, 块 97540 (2)
    

    obj 39 为OBJ$的I_OBJ4对象报ORA-08102

    SQL> select owner,object_name,object_type from dba_objects where object_id=39
      2  /
    
    OWNER                          OBJECT_NAME                    OBJECT_TYPE
    ------------------------------ ------------------------------ -------------------
    SYS                            I_OBJ4                         INDEX
    

    该对象属于bootstrap$中核心对象,无法直接rebuild,参考下面文章处理,然后再尝试导出数据
    分享I_OBJ4 ORA-8102故障恢复案例
    使用bbed 修复I_OBJ4 index 报ORA-8102错误
    bootstrap$核心index(I_OBJ1,I_USER1,I_FILE#_BLOCK#,I_IND1,I_TS#,I_CDEF1等)异常恢复—ORA-00701错误解决

    C:\Users\Administrator>expdp "'/ as sysdba'" full=y dumpfile=full_20240604_%U.dmp DIRECTORY=expdp_dir 
    logfile=full_20240604.log parallel=2 EXCLUDE=STATISTICS,AUDIT
    
    Export: Release 11.2.0.4.0 - Production on 星期二 6月 4 18:43:47 2024
    
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-31626: 作业不存在
    ORA-31637: 无法创建作业 SYS_EXPORT_FULL_01 (用户 SYS)
    ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: 在 "SYS.KUPV$FT_INT", line 798
    ORA-39080: 无法为数据泵作业创建队列 "KUPC$C_1_20240604184348" 和 "KUPC$S_1_20240604184348"
    ORA-06512: 在 "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: 在 "SYS.KUPC$QUE_INT", line 1534
    ORA-08102: 未找到索引关键字, 对象号 53, 文件 1, 块 97715 (2)
    

    通过类似方法分析确认为CDEF$的I_CDEF1 index,处理方法和I_OBJ4一样,然后导出数据成功,导入到新库中,在这个迁移过程中遭遇Wrapped 加密的package body无效的问题,具体参见:数据泵迁移Wrapped PLSQL之后报PLS-00753

    • 又一例:ORA-600 kclchkblk_4和2662故障
    • ORA-600 2131故障处理
    • Oracle Recovery Tools恢复—ORA-00704 ORA-01555故障
    • 数据库open报ORA-600 kcratr_scan_lastbwr故障处理
    • Oracle 19c 断电异常恢复
    • 从ORA-00283 ORA-16433报错开始恢复
    • ORA-10562 故障恢复—allow 1 corruption
    • 存储故障后oracle报—ORA-01122/ORA-01207故障处理
    • 记录一次ORA-01200完美恢复
    • bbed_wrap脚本获取数据块内容
    • 解决CON$ ORA-600 kdsgrp1错误
    • ORA-00322 ORA-00312 恢复


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