我们发生了电源故障,导致数据文件损坏。它已从 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) 分析表。验证结构级联[在线]
是的,您需要重新创建相关的索引,重建在这里不起作用。