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

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

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

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

Ошибка ORA-00257: archiver error — переполнение архивов Redo Log в Oracle

Обновлено: 26.08.2026 · Официальная документация ↗
  • Все пользовательские подключения блокируются с ошибкой ORA-00257: archiver error. Connect internal only, until freed.
  • База данных переходит в состояние 'заморозки' (Hang): процессы DML зависают в ожидании освобождения журналов Redo.
  • Фоновый процесс ARCH (Archiver) не может записать архивный лог из-за отсутствия места на диске или превышения лимита FRA.

1. Аварийное подключение через SYSDBA

sqlplus / as sysdba

2. Проверка заполненности Fast Recovery Area (FRA)

SELECT name, 
       ROUND(space_limit / 1024 / 1024 / 1024, 2) AS limit_gb,
       ROUND(space_used / 1024 / 1024 / 1024, 2) AS used_gb,
       ROUND(space_reclaimable / 1024 / 1024 / 1024, 2) AS reclaimable_gb,
       ROUND((space_used - space_reclaimable) / space_limit * 100, 2) AS pct_used
FROM v$recovery_file_dest;

3. Вариант решения А: Увеличение лимита FRA

Если на физическом диске есть свободное место, увеличьте размер recovery dest:

ALTER SYSTEM SET db_recovery_file_dest_size = 500G SCOPE=BOTH;

4. Вариант решения Б: Очистка старых архивлогов через RMAN

Запустите Recovery Manager и выполните бэкап с удалением перенесенных архивов:

rman target /

-- Проверка целостности каталога
CROSSCHECK ARCHIVELOG ALL;

-- Удаление устаревших архлогов, которые уже забэкаплены
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';

-- Или принудительный бэкап с освобождением места:
BACKUP ARCHIVELOG ALL DELETE INPUT;

5. Проверка восстановления работы процесса ARCH

ALTER SYSTEM ARCHIVE LOG CURRENT;
💡 Практика специалистов: Обязательно настройте регулярный RMAN-скрипт бэкапа архивлогов с опцией `DELETE INPUT` по расписанию (раз в 15-30 минут в высоконагруженных базах), а также алертинг Zabbix/Prometheus на метрику `v$recovery_file_dest.space_used > 85%`.

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

Почему удаление архивлогов через операционную систему (rm / del) не убирает ORA-00257?

Oracle хранит метаданные о занятом месте в представлении v$recovery_file_dest. Если удалить файлы напрямую через ОС, база продолжит считать их существующими, пока вы не выполните CROSSCHECK ARCHIVELOG ALL и DELETE EXPIRED в RMAN.

Могут ли обычные пользователи подключиться к базе при ошибке ORA-00257?

Нет. Вход разрешен исключительно сессиям с привилегией SYSDBA (connect internal) для выполнения экстренных административных процедур.

Почему база данных полностью зависает при сбое архиватора?

Если Online Redo Log группы заполнены, а процесс ARCH не может заархивировать хотя бы одну группу, процесс LGWR не имеет права перезаписывать неархивированные журналы, что полностью останавливает фиксацию транзакций (COMMIT).

Как перенаправить архивные логи в альтернативный каталог без перезагрузки?

Измените параметр log_archive_dest: ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/new/disk/arch' SCOPE=BOTH; и включите его: ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;.

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