如何修复 SYSAUX 表空间中损坏的索引块

如何修复 SYSAUX 表空间中损坏的索引块

我们发生了电源故障,导致数据文件损坏。它已从 RMAN 备份(包括日志)中恢复,一切正常,数据库正在运行……但我注意到这一点:

RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE FILESPERSET=10;
...snip..
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
2    FAILED 0              24312        139056          71820306
  File Name: /u02/oradata/ORCL/datafile/o1_mf_sysaux_4kjcn4qg_.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              35222
  Index      101            39306
  Other      0              40216

其他数据文件都正常。现在的问题是,如何处理这些索引?我将尝试(在工作时间之外)对 SYSAUX 中的所有索引执行“更改索引...重建”,但据我所知这无济于事,删除并重新创建索引是必要的……但有 SQL 源可以重新创建它们吗?它是 Linux 上的 Oracle 11.1.0.6。

答案1

“是否有 SQL 源来重新创建它们”您可以使用 DBMS_METADATA.GET_DDL 来检索/重建 SQL 以重建索引。对 DBA_SEGMENTS 的查询将告诉您 SYSAUX 中存在哪些索引。

答案2

还有另外两项损坏检查需要谨慎运行,特别是当 RMAN 验证发现问题时:

a) 数据库验证

b) 分析表。验证结构级联[在线]

是的,您需要重新创建相关的索引,重建在这里不起作用。

相关内容