Ошибка ORA-01110: data file string — сбои и восстановление датафайлов
- Ошибка
ORA-01110: data file 5: '/u01/app/oracle/oradata/users01.dbf'в связке сORA-01157,ORA-01578илиORA-00376. - Табличное пространство переходит в статус
OFFLINEили база не может открыться из режимаMOUNT. - Сбои чтения/записи транзакций при обращении к объектам, расположенным в проблемном файле данных.
1. Идентификация файла данных и его статуса
SELECT file#, name, status, enabled, bytes/1024/1024 AS mb
FROM v$datafile
WHERE file# = 5;2. Проверка физической доступности файла на диске
# Проверка существования и прав доступа файла
ls -l /u01/app/oracle/oradata/users01.dbf3. Восстановление файла данных через RMAN (Production метод)
Если база открыта или находится в режиме MOUNT:
rman target /
-- 1. Перевод файла в Offline (если база открыта)
SQL 'ALTER DATABASE DATAFILE 5 OFFLINE;';
-- 2. Восстановление файла из резервной копии
RESTORE DATAFILE 5;
-- 3. Накат архивных логов на восстановленный файл
RECOVER DATAFILE 5;
-- 4. Возврат файла в Online
SQL 'ALTER DATABASE DATAFILE 5 ONLINE;';4. Временный перевод некритичного файла в Offline для открытия базы
Если поврежден вспомогательный файл (не SYSTEM/SYSAUX/UNDO), базу можно открыть без него:
ALTER DATABASE DATAFILE 5 OFFLINE;
ALTER DATABASE OPEN; Частые вопросы (FAQ)
Можно ли открыть базу, если в ORA-01110 указан файл табличного пространства SYSTEM?
Нет. Табличные пространства SYSTEM и UNDO критически необходимы для работы словаря и транзакций. База не откроется, пока эти файлы не будут полностью восстановлены.
Почему ORA-01110 всегда возникает вместе с другими ошибками?
Код ORA-01110 является контекстным стековым сообщением Oracle — он указывает конкретный номер и путь к файлу данных, к которому относится предшествующая ошибка (например, ORA-01157 или ORA-01578).
Что делать, если файл данных был случайно удален, но бэкапа нет?
Если база работает в ARCHIVELOG и сохранились все архивлоги с момента создания файла: ALTER DATABASE CREATE DATAFILE 5 AS '/path/users01.dbf'; затем RECOVER DATAFILE 5;.
Как проверить файл данных на скрытые логические повреждения блоков (Bad Blocks)?
Используйте утилиту DBVERIFY: dbv file=/u01/app/oracle/oradata/users01.dbf blocksize=8192 feedback=10000.