Эта ошибка возникает в комплексе с другими ошибками, что полностью описывает ситуацию:
ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 2 ORA-00376: file 2 cannot be read at this time ORA-01110: data file 2: 'ORACLE_BASE/oradata/SID/UNDOTBS01.DBF'
Значение ошибок ORA-00704, ORA-00376, ORA-01110
ORA-00704: bootstrap process failure – это “шумная” ошибка, указывающая другую ошибку, возникшую во время запуска БД
ORA-00376: file %s cannot be read at this time – означает, что файл (значение) не может быть прочитан в настоящее время
ORA-01110: data file %s: %s – эта ошибка идет в “приложение” и служит для уточнения с каким файлом произошла основная ошибка
Причина и действия
Как видно из сообщений в приведенном примере, неполадки возникли в одном из файлов табличного пространства, отвечающего за хранение UNDO-сегментов. Из-за нарушений во внутренней структуре, попытка чтения файла прошла неудачно, что сделало запуск БД невозможным.
Для того, чтобы восстановить структуру табличного пространства, используем команду recover. Для начала, стоит посмотреть в каком состоянии находятся все файлы табличных пространств. Очевидно, что проблемный файл будет находиться в состоянии RECOVER. Делаем восстановление и переводим файл в состояние ONLINE. Для этого:
- соединяемся с простаивающим экземпляром и стартуем БД до этапа монтирования включительно, оставляя ее закрытой;
- восстанавливаем файл UNDOTBS01.DBF;
- переводим его в состояние ONLINE;
- открываем БД.
connect / as sysdba startup mount -- проверяем состояние файлов табличных пространств (UNDOTBS01.DBF находится в состянии RECOVER) select file#,status,name from v$datafile; FILE# STATUS NAME ---------- ------- ---------------------------------------------------------------------------------------- 1 SYSTEM ORACLE_BASE/oradata/SID/SYSTEM01.DBF 2 RECOVER ORACLE_BASE/oradata/SID/UNDOTBS01.DBF 3 ONLINE ORACLE_BASE/oradata/SID/TOOLS01.DBF 4 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF 5 ONLINE ORACLE_BASE/oradata/SID/TEMP01.DBF 6 ONLINE ORACLE_BASE/oradata/SID/SYSAUX01.DBF 7 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF -- восстанавливаем файл табличного пространства recover datafile 2; -- проверяем что получилось SQL> select file#,status,name from v$datafile; FILE# STATUS NAME ---------- ------- ---------------------------------------------------------------------------------------- 1 SYSTEM ORACLE_BASE/oradata/SID/SYSTEM01.DBF 2 OFFLINE ORACLE_BASE/oradata/SID/UNDOTBS01.DBF 3 ONLINE ORACLE_BASE/oradata/SID/TOOLS01.DBF 4 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF 5 ONLINE ORACLE_BASE/oradata/SID/TEMP01.DBF 6 ONLINE ORACLE_BASE/oradata/SID/SYSAUX01.DBF 7 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF -- переводим файл в состояни ONLINE alter database datafile 2 online; select file#,status,name from v$datafile; FILE# STATUS NAME ---------- ------- ---------------------------------------------------------------------------------------- 1 SYSTEM ORACLE_BASE/oradata/SID/SYSTEM01.DBF 2 ONLINE ORACLE_BASE/oradata/SID/UNDOTBS01.DBF 3 ONLINE ORACLE_BASE/oradata/SID/TOOLS01.DBF 4 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF 5 ONLINE ORACLE_BASE/oradata/SID/TEMP01.DBF 6 ONLINE ORACLE_BASE/oradata/SID/SYSAUX01.DBF 7 ONLINE ORACLE_BASE/oradata/SID/USERS01.DBF -- открываем БД alter database open;