Удаление старых archivelog и ошибка RMAN-06214
Сегодня пришлось заниматься одной долго работающей без присмотра базой Oracle. Бэкапы там делаются регулярно автоматически, а вот архивные логи транзакций (archivelogs) не удалялись. А место на диске кушали.
Удалить их несложная задача. Например удалить все логи старше 15-ти дней:
oracle@MAIN:~>rman target=sys@database
RMAN>delete archivelog until time ’sysdate-14′;
Или удалить все до определенного SCN:
RMAN>delete archivelog until sequence 2365;
Посмотреть перед удалением, что удалиться, можно так:
RMAN>list archivelog until time ’sysdate-30′;
Ну или обратиться непосредственно к представлению v_$archived_log.
Но при удалении очень старых логов RMAN выдал ошибку:
RMAN-06207: WARNING: 2 objects could not be deleted for DISK channel(s) due
RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212: Object Type Filename/Handle
RMAN-06213:——————————————————————
RMAN-06214: Archivelog /u02/archlog/1_1202_679170523.dbf
RMAN-06214: Archivelog /u02/archlog/1_1203_679170523.dbf
Как RMAN и подсказывает, надо сделать CROSSCHECK файлов:
CHANGE ARCHIVELOG ALL CROSSCHECK;
После этого все нормально удалится.
Зачем написал эти прописные истины – да для себя в пямятку, склероз знаете ли. :-)

Спасибо, очень пролезно, кратко и доступно!
Спасибо очень помогло!! Все хорошо описано!
Спасибо! Очень полезно; после CROSSCHECK действительно стало возможным удаление архивных журналов.
Я пользовался командой:
RMAN>DELETE COPY OF ARCHIVELOG ALL COMPLETED BEFORE ‘SYSDATE-15′;
Часть логов удалилась, но физически сейчас на диске достаточно много старых логов (они старше 15 дней!).
RMAN>list archivelog until time ’sysdate-16′; – показывает, что никаких логов нет!
SELECT * FROM V$RECOVERY_FILE_DEST; – показала, что space_used значительно уменьшился.
Будьте добры помочь понять почему логи физически сохранились.
Спасибо!
Удаляется только то, о чем знает RMAN. А вы пишите:
“RMAN>list archivelog until time ’sysdate-16′; – показывает, что никаких логов нет!”
Спасибо за ответ! Вот теперь для меня загадка: как мог RMAN “не знать” про старые логи. Несколько месяцев назад в базе осуществлялась операция восстановления. Подозрение вызывает только это, хотя на RMAN это не должно касаться.
Как это не касается? После восстановления в базе о старых логах и не должно быть никаких записей. База, можно сказать, с чистого листа жить начала.
Дата создания оставшихся старых архивных логов старше чем дата восстановления из бэкапа?
“Дата создания оставшихся старых архивных логов старше чем дата восстановления из бэкапа?”
Да! Они старше! Вы были правы! Буду удалять их вручную.
Спасибо!