异常断电数据库恢复-从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_inorder2ORA-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故障恢复案例](https://www.xifenfei.com/2015/03/%E5%88%86%E4%BA%ABi_obj4-ora-8102%E6%95%85%E9%9A%9C%E6%81%A2%E5%A4%8D%E6%A1%88%E4%BE%8B.html "分享I_OBJ4 ORA-8102故障恢复案例") [使用bbed 修复I_OBJ4 index 报ORA-8102错误](https://www.xifenfei.com/2015/03/%E4%BD%BF%E7%94%A8bbed-%E4%BF%AE%E5%A4%8Di_obj4-index-%E6%8A%A5ora-8102.html "使用bbed 修复I_OBJ4 index 报ORA-8102错误") [bootstrap核心index(I_OBJ1,I_USER1,I_FILE#_BLOCK#,I_IND1,I_TS#,I_CDEF1等)异常恢复---ORA-00701错误解决](https://www.xifenfei.com/2014/10/解决ora-00701-object-necessary-for-warmstarting-database-cannot-be-altered错误.html "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

相关推荐
kejijianwen1 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
高兴就好(石5 小时前
DB-GPT部署和试用
数据库·gpt
这孩子叫逆5 小时前
6. 什么是MySQL的事务?如何在Java中使用Connection接口管理事务?
数据库·mysql
Karoku0665 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
码农郁郁久居人下5 小时前
Redis的配置与优化
数据库·redis·缓存
MuseLss6 小时前
Mycat搭建分库分表
数据库·mycat
Hsu_kk7 小时前
Redis 主从复制配置教程
数据库·redis·缓存
DieSnowK7 小时前
[Redis][环境配置]详细讲解
数据库·redis·分布式·缓存·环境配置·新手向·详细讲解
程序猿小D7 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa