感谢您关注“数据库运维之道”公众号,分享数据库运维技术!
本期将为大家分享“自动清理过期备份文件报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错误”的处置案例。希望能给大家带来帮助。
欢迎关注“数据库运维之道”公众号,一起学习数据库技术!
