使用RMAN备份时应如何处置归档日志文件

昨天去某客户部署RMAN备份,在跑shell脚本的时候,提示找不到归档日志,因为客户那里之前只对数据库做EXPDP逻辑导出备份,并且每天都自动删除前一天的归档,每个归档的生成量大概在200M左右,因为考虑磁盘空间比较紧张,不得已而为之。

在我的脚本中,是采用backup database format 'xxx' plus archivelog format 'xxx'的方式进行备份的,在执行RMAN脚本时,由于是先对归档日志进行备份,再对数据库进行备份的,在脚本的输出日志中,提示找不到35xxx的归档日志,而现在最旧的还物理存在的归档日志已经到36xxx了,也就是说,这1000多个日志其实是已经被OS脚本从物理上删除了,后来检验了一下确实如此,每天生成的归档数量大约为40个左右,那么一天的归档日志就是800M左右

 

于是进入RMAN对归档日志进行crosscheck,发现有7000多个归档日志检查结果是“failed”的(物理上已被删除),命令如下:

RMAN> crosscheck archivelog all;

 

再对这些expired的归档,从控制文件信息删除掉

RMAN> delete noprompt expired archivelog all;

 

然后再继续跑脚本,之后的备份就很顺利,先把归档日志备份完毕,接着是备份数据库,最后是控制文件和spfile

--------------------------------------推荐阅读 --------------------------------------

RMAN 配置归档日志删除策略

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

--------------------------------------分割线 --------------------------------------

 

回来之后,我自己又做了一个测试,发现即便是当归档日志文件未failted的时候,备份还是顺利地进行下去了,下面看我自己的测试:

 

1. 先把归档日志移动到别的目录(模拟日志被物理删除)

[oracle@ora10g ~]$ cd $ORACLE_BASE/flash_recovery_area/ORA10G/archivelog

[oracle@ora10g archivelog]$ ll

total 8

drwxr-x--- 2 oracle oinstall 4096 Sep 24 11:46 2014_09_24

[oracle@ora10g archivelog]$ mv 2014_09_24/* .

[oracle@ora10g archivelog]$ ll

total 6636

drwxr-x--- 2 oracle oinstall    4096 Sep 24 11:59 2014_09_24

-rw-r----- 1 oracle oinstall  597504 Sep 24 11:46 o1_mf_1_10_b24ho39f_.arc

-rw-r----- 1 oracle oinstall 5473792 Sep 24 11:35 o1_mf_1_3_b24gz52r_.arc

-rw-r----- 1 oracle oinstall  373248 Sep 24 11:35 o1_mf_1_4_b24gz81d_.arc

-rw-r----- 1 oracle oinstall  180224 Sep 24 11:35 o1_mf_1_5_b24gzbb6_.arc

-rw-r----- 1 oracle oinstall   33792 Sep 24 11:35 o1_mf_1_6_b24gzd6y_.arc

-rw-r----- 1 oracle oinstall   26624 Sep 24 11:35 o1_mf_1_7_b24gzky8_.arc

-rw-r----- 1 oracle oinstall    1536 Sep 24 11:35 o1_mf_1_8_b24gzqnt_.arc

-rw-r----- 1 oracle oinstall   57344 Sep 24 11:44 o1_mf_1_9_b24hjflc_.arc

 

这里共有8个归档日志文件被“删除”

 

2. 进入RMAN,对归档日志进行交叉校验

[oracle@ora10g archivelog]$ exit

exit

host command complete

 

RMAN> crosscheck archivelog all;

 

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=145 devtype=DISK

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_3_b24gz52r_.arc recid=208 stamp=859116904

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_4_b24gz81d_.arc recid=209 stamp=859116904

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_5_b24gzbb6_.arc recid=210 stamp=859116906

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_6_b24gzd6y_.arc recid=211 stamp=859116908

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_7_b24gzky8_.arc recid=212 stamp=859116914

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_8_b24gzqnt_.arc recid=213 stamp=859116919

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_9_b24hjflc_.arc recid=214 stamp=859117453

validation failed for archived log

archive log filename=/u01/app/oracle/flash_recovery_area/ORA10G/archivelog/2014_09_24/o1_mf_1_10_b24ho39f_.arc recid=215 stamp=859117603

Crosschecked 8 objects

 

3. 不删除expired的归档,直接跑RMAN备份脚本

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25e0f6cb72728a2a03cdda5c32f540e7.html