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

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

本期将为大家分享“自动清理过期备份文件报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和RMAN-06214错误”的处置案例。希望能给大家带来帮助。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值