暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【备份恢复】自动清理过期备份文件报RMAN-06207和RMAN-06214错误

833

感谢您关注“数据库运维之道”公众号,分享数据库运维技术!

本期将为大家分享“自动清理过期备份文件报RMAN-06207和RMAN-06214错误”的案例。

关键词:RMAN-06207、RMAN-06208、RMAN-06214

今天给客户的Oracle 10g 生产环境做一次健康检查,从备份日志中看到一个RMAN告警信息。数据库版本为10.2.0.4.0。错误信息如下所示:

    --备份日志中记录的告警信息
    RMAN-06207: WARNING: 227 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: Datafile Copy home/oracle/stand.bak
    RMAN-06214: Datafile Copy backup/orclstandby.ctl
    RMAN-06214: Backup Piece backup/contrl_ORCL_20230720_24696_1
    RMAN-06214: Backup Piece backup/dbfull_ORCL_20230721_24699_1_2.bak
    RMAN-06214: Backup Piece /backup/dbfull_ORCL_20230721_24700_1_2.bak
    复制

    1、运用以下脚本检查数据库备份情况,可以从v$rman_backup_job_details视图查看到备份状态为“COMPLETED WITH WARNINGS”。接着对备份日志进一步核实,看到的错误信息如上述所示。

      cat check_backup.sh 
      #!/bin/bash
      source /home/oracle/.bash_profile
      ps -ef|grep ora_|grep pmon|awk '{print$8}'
      for inst_id in `ps -ef|grep ora_|grep pmon|awk '{print$8}'|sed -e 's/ora_pmon_//'|grep -v "sed"`
      do
      echo "export ORACLE_SID=$inst_id"
      export ORACLE_SID=$inst_id
      sqlplus -s / as sysdba <<-EOF
      set pagesize 999
      set linesize 1000
      col input_type for a10
      col status for a25
      col time_taken_display for a10
      col input_bytes_display for a10
      col output_bytes_display for a10
      col start_time for a20
      col end_time for a20
      select input_type,status,
      to_char(start_time,'yyyy-mm-dd hh24:mi:ss') start_time,
      to_char(end_time,'yyyy-mm-dd hh24:mi:ss') end_time,
      input_bytes_display,
      output_bytes_display,
      time_taken_display,
      compression_ratio
      from v\$rman_backup_job_details
      order by 3 desc;
      EOF
      done
      复制

      2、尝试手工执行delete obsolete命令来清理,依旧会出现RMAN错误,备份文件类型为Datafile Copy和Backup Piece。通过ls命令查看备份文件确实已不存在。

        RMAN-06214: Datafile Copy   /backup/orclstandby.ctl
        RMAN-06214: Backup Piece /backup/contrl_ORCL_20230720_24696_1
        复制

        手工做一次crosscheck交叉检查,然后再执行delete obsolete命令完成清理。

          --Backup Piece
          RMAN> crosscheck copy;
          --Backup Piece
          RMAN> crosscheck backuppiece '/backup/contrl_ORCL_20230720_24696_1';
          using channel ORA_DISK_1
          crosschecked backup piece: found to be 'EXPIRED'
          backup piece handle=/backup/contrl_ORCL_20230720_24696_1 recid=21806 stamp=1142986726
          Crosschecked 1 objects
          复制

          检查备份日志,未发现RMAN告警信息,问题得到解决。初步判断是工程师手动做了一次全备用于部署DataGuard后未及时清理导致。

          推荐阅读一:crosscheck常用命令

          使用crosscheck命令交叉校验备份文件,以确保rman元数据与备份文件保持同步。当执行该命令时,如果rman元数据记录的状态与实际备份文件不匹配,则会更新元数据里的状态使其与实际备份文件状态一致;若备份文件处于expired状态,那么说明该备份文件已失效,可以删除。

            1.crosscheck backup--核对所有备份(包括有效和无效的)
            --用于核对数据库,表空间,数据文件,控制文件,归档日志,spfile备份集
            CROSSCHECK BACKUP of database;
            CROSSCHECK BACKUP of tablespace system;
            CROSSCHECK BACKUP of datafile 1;
            CROSSCHECK BACKUP of controlfile;
            CROSSCHECK BACKUP of archivelog all;
            CROSSCHECK BACKUP of spfile;


            2.CROSSCHECK BACKUPPIECE
            --用于核对特定备份片,该命令需要制定备份片的BP值或备份片名称;CROSSCHECK BACKUPPIECE 24;
            CROSSCHECK BACKUPPIECE '/backup/contrl_ORCL_20230720_24696_1';


            3.CROSSCHECK BACKUPSET
            --用于核对特定的备份集,该命令需要制定备份集的BP值;
            CROSSCHECK BACKUPSET 24;


            4.CROSSCHECK COPY
            --用于核对数据库、表空间、数据文件、控制文件、归档文件的映像副本
            (即备份是用COPY DATAFILE ...... 或BACKUP AS COPY ......DATAFILE......命令备份数据文件的映像)
            CROSSCHECK COPY;
            CROSSCHECK COPY of database;
            复制

            推荐阅读二:delete常用命令

            使用delete命令用于删除RMAN备份记录以及相应的物理备份文件。

              --删除EXPIRED文件
              CROSSCHECK BACKUPSET OF TABLESPACE users
              DEVICE TYPE sbt COMPLETED BEFORE 'SYSDATE-31';
              DELETE NOPROMPT EXPIRED BACKUPSET OF TABLESPACE users
              DEVICE TYPE sbt COMPLETED BEFORE 'SYSDATE-31';
              --删除到期文件
              DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 7 DAYS;
              --删除已经备份过的归文件
              CONFIGURE DEFAULT DEVICE TYPE TO sbt;
              CONFIGURE ARCHIVELOG DELETION POLICY TO
              BACKED UP 2 TIMES
              TO DEVICE TYPE sbt;
              --删除所有归档文件或几天前
              DELETE ARCHIVELOG ALL;
              delete archivelog all completed before 'sysdate-1';
              --删除备份片
              DELETE NOPROMPT BACKUPSET TAG weekly_bkup;
              DELETE FORCE NOPROMPT BACKUPSET TAG weekly_bkup;
              复制

              • RMAN-06207 and RMAN-06208 deleting RMAN backups (Doc ID 290559.1)

              • https://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta015.htm#RCMRF119

              • https://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta016.htm#i81315

              以上就是本期关于“自动清理过期备份文件报RMAN-06207和RMAN-06214错误”的处置案例。希望能给大家带来帮助。

              欢迎关注“数据库运维之道”公众号,一起学习数据库技术!

              欢迎扫码进“数据库运维之道”,此群用于数据库技术交流,禁止发广告!

              可以加我的微信,交个朋友或讨论数据库解决方案,请备注”姓名单位“,谢谢!

              文章转载自数据库运维之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论