Ошибка ORA-16014: log sequence not archived — переполнение архива логов
- База данных полностью зависает (hang), сессии переходят в ожидание
log file switch (archiving needed). - В alert.log фиксируется ошибка
ORA-16014: log ... sequence# ... not archived, no available destinations. - Область Fast Recovery Area (FRA) или диск с архивными логами (Archive Redo Logs) заполнены на 100%.
1. Проверка заполнения 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_used - space_reclaimable) / space_limit * 100, 2) AS pct_used
FROM v$recovery_file_dest;2. Экстренное увеличение размера FRA
ALTER SYSTEM SET db_recovery_file_dest_size = 500G SCOPE=BOTH;3. Очистка устаревших архивлогов через RMAN
Подключитесь к RMAN и выполните удаление уже забэкапленных архивных журналов:
rman target /
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';4. Проверка состояния процесса архивации
ALTER SYSTEM ARCHIVE LOG START;
ALTER SYSTEM SWITCH LOGFILE; Частые вопросы (FAQ)
Почему база данных зависает, когда кончается место под архивлоги?
В режиме ARCHIVELOG процесс LGWR не может перезаписать онлайн-журнал REDO до тех пор, пока процесс ARCH (ARCn) полностью не скопирует его в архивную директорию. СУБД блокирует все DML-операции для предотвращения потери данных.
Что делать, если файлы архивлогов удалили с диска через rm / del вручную?
Oracle продолжает считать их занятыми в контрольном файле. Обязательно выполните в RMAN команду: CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; чтобы синхронизировать метаданные.
Как перенаправить архивацию на другой диск при аварии?
Установите альтернативный путь: ALTER SYSTEM SET log_archive_dest_1='LOCATION=/mnt/backup_disk/arch' SCOPE=BOTH;
Как настроить автоматическую ротацию архивлогов в RMAN?
Создайте скрипт резервного копирования RMAN, содержащий директиву BACKUP ARCHIVELOG ALL DELETE INPUT;