Абрамов online » Удаление старых archivelog и ошибка RMAN-06214

Удаление старых archivelog и ошибка RMAN-06214

OracleСегодня пришлось заниматься одной долго работающей без присмотра базой 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;

После этого все нормально удалится.

Зачем написал эти прописные истины – да для себя в пямятку, склероз знаете ли. :-)

автор mr_Vovan · 10.11.2009 · Теги:  · Рубрики: MAIN

Комментариев - 7 на пост “Удаление старых archivelog и ошибка RMAN-06214”

  1. BondarY пишет:

    Спасибо, очень пролезно, кратко и доступно!

  2. Nurik пишет:

    Спасибо очень помогло!! Все хорошо описано!

    • Rufat Huseynov пишет:

      Спасибо! Очень полезно; после 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 значительно уменьшился.
      Будьте добры помочь понять почему логи физически сохранились.
      Спасибо!

      • mr_Vovan пишет:

        Удаляется только то, о чем знает RMAN. А вы пишите:
        “RMAN>list archivelog until time ’sysdate-16′; – показывает, что никаких логов нет!”

        • Rufat Huseynov пишет:

          Спасибо за ответ! Вот теперь для меня загадка: как мог RMAN “не знать” про старые логи. Несколько месяцев назад в базе осуществлялась операция восстановления. Подозрение вызывает только это, хотя на RMAN это не должно касаться.

          • mr_Vovan пишет:

            Как это не касается? После восстановления в базе о старых логах и не должно быть никаких записей. База, можно сказать, с чистого листа жить начала.
            Дата создания оставшихся старых архивных логов старше чем дата восстановления из бэкапа?

            • Rufat Huseynov пишет:

              “Дата создания оставшихся старых архивных логов старше чем дата восстановления из бэкапа?”
              Да! Они старше! Вы были правы! Буду удалять их вручную.
              Спасибо!

Подписаться на комментарии по RSS

'Не стесняйтесь, оставьте комментарий - ваше мнение интересно всем!'

Для комменитирования необходимо авторизоваться. Войти с помощью: