Как исправить поврежденные блоки индексов в табличном пространстве 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, но AFAIK, который не поможет, удаление и воссоздание индексов необходимо... но есть ли источник SQL для их воссоздания? Это Oracle 11.1.0.6 в Linux.

2 ответа

Есть две другие проверки на коррупцию, которые было бы целесообразно выполнить, особенно если проверка RMAN обнаружила проблемы:

а) dbverify

б) АНАЛИЗ ТАБЛИЦА. VALIDATE СТРУКТУРА КАСКАД [ОНЛАЙН]

И да, вам нужно будет воссоздать задействованные индексы, перестройка здесь не работает.

"есть ли источник SQL для их воссоздания" Вы можете использовать DBMS_METADATA.GET_DDL, чтобы получить / восстановить SQL для перестроения индексов. Запрос DBA_SEGMENTS скажет вам, какие индексы существуют в SYSAUX.

Другие вопросы по тегам