Назад | Перейти на главную страницу

Как исправить поврежденные блоки индексов в табличном пространстве 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.

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

а) dbverify

б) АНАЛИЗНАЯ ТАБЛИЦА. ПРОВЕРЬТЕ СТРУКТУРНЫЙ КАСКАД [ОНЛАЙН]

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

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