ORA-01578: Повреждён блок данных Oracle (file #, block #)
OracleЧто это значит?
Блок данных в указанном файле данных повреждён; Oracle сообщает, что блок не прошёл проверку целостности (контрольную сумму). Это физическое повреждение.
Почему возникает?
Отказ диска/оборудования, ошибки уровня хранения, проблемы операционной системы или контроллера, частично записанные блоки после отключения питания или повреждённый бэкап/восстановление.
Как исправить
Подтвердите повреждение и его масштаб: RMAN> VALIDATE DATABASE / VALIDATE CHECK LOGICAL DATAFILE n; также запустите DBVERIFY (dbv) и проверьте v$database_block_corruption. Если есть бэкап, восстановите на уровне блоков: RMAN> RECOVER DATAFILE n BLOCK m; или для всех перечисленных блоков RMAN> RECOVER CORRUPTION LIST; (старая команда BLOCKRECOVER устарела начиная с 11g). Если это блок индекса, перестройте индекс. Всегда проверяйте исправность оборудования/дисков; первопричина обычно в системе хранения.
Ещё по этой СУБД
- ORA-01000Превышено максимальное число открытых курсоров
- ORA-00018Превышено максимальное число сессий
- ORA-28000Учётная запись заблокирована
- ORA-01722Недопустимое число
- ORA-02049Тайм-аут: распределённая транзакция ожидает блокировку
- enq: TX - row lock contentionОжидание: сессия заблокирована блокировкой уровня строки, удерживаемой другой транзакцией
- log file syncОжидание: сессия ждёт, пока LGWR сбросит redo на диск при commit