Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

ORA-00312 1С:Предприятие и СУБД

Ошибка ORA-00312: online log string thread string — повреждение журналов Redo

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/redo01.log' при старте базы (STARTUP) или в процессе выполнения DML.
  • Ошибка сопровождается кодами ORA-00313, ORA-00314 или ошибками I/O ввода-вывода подсистемы хранения.
  • База данных переходит в статус MOUNT и отказывается открываться (ALTER DATABASE OPEN).

1. Проверка статуса поврежденной группы Redo Log

SELECT group#, thread#, sequence#, bytes/1024/1024 AS mb, members, status, archived
FROM v$log;

Проверьте расположение файлов группы:

SELECT group#, status, member FROM v$logfile;

2. Сценарий 1: Группа находится в статусе INACTIVE или UNUSED

Если поврежденный журнал не является активным (CURRENT), очистите его:

ALTER DATABASE CLEAR LOGFILE GROUP 1;
-- Или, если журнал не был заархивирован:
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;

После очистки откройте базу: ALTER DATABASE OPEN;.

3. Сценарий 2: Группа находится в статусе CURRENT (Активный лог)

Повреждение текущего журнала требует неполного восстановления (Point-in-Time Recovery):

-- Подключение к RMAN в состоянии MOUNT
rman target /

RESTORE DATABASE;
RECOVER DATABASE UNTIL CANCEL;
-- Введите CANCEL при запросе отсутствующего лога

Откройте базу с пересозданием журналов Redo:

ALTER DATABASE OPEN RESETLOGS;

4. Настройка мультиплексирования (Multiplexing) Redo Log

Для предотвращения подобных аварий в будущем создайте зеркальные копии членов в каждой группе на разных дисковых массивах:

ALTER DATABASE ADD LOGFILE MEMBER '/u02/oradata/redo01_mirror.log' TO GROUP 1;
ALTER DATABASE ADD LOGFILE MEMBER '/u02/oradata/redo02_mirror.log' TO GROUP 2;
💡 Практика специалистов: Никогда не используйте скрытые параметры типа `_allow_resetlogs_corruption = true` без согласования с Oracle Support. Это приводит к скрытой логической рассогласованности словаря данных и табличных пространств.

Частые вопросы (FAQ)

К чему приводит открытие базы с параметром RESETLOGS?

RESETLOGS сбрасывает текущую цепочку инкарнации журнала Redo, обнуляет счетчики sequence# и заново инициализирует заголовочные метаданные всех файлов журналов. Старые бэкапы до RESETLOGS требуют перерегистрации.

Можно ли удалить поврежденный Redo Log файл через ALTER DATABASE DROP LOGFILE MEMBER?

Можно, но только если в группе осталось более одного рабочего участника (member) и группа не находится в статусе CURRENT.

Что делать, если база находится в состоянии NOARCHIVELOG и поврежден CURRENT лог?

В режиме NOARCHIVELOG потеря активного журнала неизбежно приводит к потере данных с момента последнего холодного бэкапа. Придется восстанавливать последний полный бэкап.

Как избежать единой точки отказа для журналов Redo?

Настройте мультиплексирование: каждая группа должна иметь как минимум 2 члена (members), расположенных на физически независимых дисковых контроллерах или разных LUN.

Полезные материалы
Рекомендуем