RMAN Crosscheck原理及案例分析

谈到Crosscheck,就要先说说Controlfile,它里面记录了数据对象备份和恢复的相关信息,举例来说:如果物理归档日志发生丢失或损坏,但controlfile还记录着这些日志信息,则归档备份会因找不到这些文件而失败,这时就需要用到crosscheck archivelogall去检查控制文件和物理文件的差异,crosscheck的结果包含两个部分,存在于物理介质上的文件被标记为available,不存在的则标记为expired(如果不存在的文件恢复到原来位置上,则crosscheck后会重新标记为available),然后用deleteexpired archive log all删除控制文件中那些失效的日志信息,再次备份归档日志,成功;

crosscheck对于备份集也同样如此,如下例。

RMAN> crosscheck backupset;

using target database control file instead of recoverycatalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=74 devtype=DISK
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/QRH/102_64/dbs/c-748375813-20120520-00recid=1 stamp=783815906
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/PRH/sapdata1/db_t785778883_s2_p1recid=2 stamp=785778884
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/PRH/sapdata1/db_t785779014_s5_p1recid=5 stamp=785779016
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/oracle/QRH/102_64/dbs/c-748375813-20120612-00recid=6 stamp=785779052
Crosschecked 6 objects

 

以下案例是我今天遇到的情况,由于做归档日志恢复后,恢复的文件被删除而导致新的备份失败(可能是由于controlfile认为恢复的那些日志也需要重新备份):

上班发现归档日志所在的磁盘目录快撑爆了,在用NBU备份归档失败后尝试直接用RMAN手工备份,得到如下报错:

RMAN> RUN {
2> ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
3> sql 'alter system archive log current';
4> BACKUP
5>   filesperset 20
6>   FORMAT 'al_%s_%p_%t'
7>   ARCHIVELOG ALL DELETE INPUT;
8> RELEASE CHANNEL ch00;
9> }

using target database control file instead of recoverycatalog
allocated channel: ch00
channel ch00: sid=259 devtype=SBT_TAPE
channel ch00: VERITAS NetBackup for Oracle - Release 6.0(2006110304)

sql statement: alter system archive log current

Starting backup at 13-AUG-12
current log archived
released channel: ch00
RMAN-00571:===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002: failure of backup command at 08/13/2012 10:15:04
RMAN-06059: expected archived log not found, lost of archived logcompromises recoverability
ORA-19625: error identifying file/oracle/PRH/sapdata12/1_376900_642211771.dbf
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3

而默认的归档路径是在/oracle/PRH/oraarch下的,RMAN怎么会去sapdata12下查找归档文件呢,看这个SCN号才想起来上周末我做过归档日志的恢复,而且是恢复到了sapdata12目录下,现在该目录已经没有376900这个归档日志了,根据上述的crosscheck原理,在RMAN下分别执行crosscheck archivelog all 和delete expired archivelog all,然后备份就成功了。

RMAN> crosscheck archivelog all;

using target database control file instead of recoverycatalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=260 devtype=DISK

validation failed for archived log
archive log filename=/oracle/PRH/sapdata12/1_380592_642211771.dbfrecid=389354 stamp=791076624
validation failed for archived log
archive log filename=/oracle/PRH/sapdata12/1_380593_642211771.dbfrecid=389353 stamp=791076624

validation succeeded for archived log
archive logfilename=/oracle/PRH/oraarch/PRHarch1_380594_642211771.dbfrecid=385441 stamp=791036169
validation succeeded for archived log
archive logfilename=/oracle/PRH/oraarch/PRHarch1_380595_642211771.dbfrecid=385458 stamp=791036227

 

RMAN> delete expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=260 devtype=DISK

List of Archived Log Copies
Key    ThrdSeq    S Low Time  Name
------- ---- ------- - --------- ----

389354   380592  X 11-AUG-12/oracle/PRH/sapdata12/1_380592_642211771.dbf
389353   380593  X 11-AUG-12/oracle/PRH/sapdata12/1_380593_642211771.dbf

Do you really want to delete the above objects (enter YES orNO)?YES

deleted archive log
archive log filename=/oracle/PRH/sapdata12/1_380592_642211771.dbfrecid=389354 stamp=791076624
deleted archive log
archive log filename=/oracle/PRH/sapdata12/1_380593_642211771.dbfrecid=389353 stamp=791076624
Deleted 2 EXPIRED objects

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值