у нас был сбой питания, в результате которого файлы данных были повреждены. Он был восстановлен из резервной копии 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.