不同备份策略不兼容引起的磁盘空间故障解决实(2)

从公允的角度看,这个脚本是看不出什么问题的。设置环境变量、目录位置、对数据库和归档文件进行备份。之后进行crosscheck检查expired backup信息,最后依据obsolete retention原则将过期日志进行删除。
 
目录结构中的bak是存放备份集合的地方(虽然控制文件还是遗留在$ORACLE_HOME/dbs中),logs目录为文本日志。进入bak目录之后,检查备份情况。

[root@DB bak]# ls | more

20130719_archivelog_DB_109189_1_k5of3j4s.bak

20130719_archivelog_DB_109190_1_k6of3j4t.bak

20130719_full_DB_109180_1_jsof3j1b.bak

20130719_full_DB_109186_1_k2of3j4d.bak

20130720_archivelog_DB_109258_1_maof64d1.bak

20130720_archivelog_DB_109259_1_mbof64d2.bak

20130720_full_PDB_109255_1_m7of64cn.bak

(篇幅原因,有省略)

20140307_full_DB_115107_1_d3p2ho2g.bak

20140307_full_DB_115108_1_d4p2ho2g.bak

20140307_full_DB_115109_1_d5p2ho47.bak

201401171422.dmp

full_20130720.tar.gz

rm

注意:备份片中的时间日期是在其中的,从2013年7月开始,一直备份集合就存在。数据总量是300G。

[root@DB bak]# du -h

301G    .

这个显然是有问题,在rman备份脚本中,有明确的delete obsolete语句,将不需要的备份集合删除。确定obsolete的规则是可以从show all中看到。
 
 

RMAN> show all;

RMAN configuration parameters for database with db_unique_name DB are:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

留存窗口策略是7天。现实bak目录中的内容显然是超过了这个范围。长期的备份留存会让bak占有的空间越来越多,这样即使/data目录有1.4T这么大的空间,也会被撑满的。
 
那么,确认到撑满的原因之后,就需要确认Oracle在执行应用程序RMAN脚本时候,为什么没有成功删除备份。寻找logs目录中每天的日志信息,可以找到答案。

[root@DB logs]# tail -n 20 db.full.20140307010102.log

Backup Piece      73678  27-FEB-14          c-1778314713-20140227-02

Backup Set          73679  27-FEB-14       

Backup Piece      73679  27-FEB-14          a5p1mv7i_1_1

Backup Set          73680  27-FEB-14       

Backup Piece      73680  27-FEB-14          a6p1mv8m_1_1

Backup Set          73681  27-FEB-14       

Backup Piece      73681  27-FEB-14          c-1778314713-20140227-03

Backup Set          73684  28-FEB-14       

Backup Piece      73684  28-FEB-14          /data/awpdb/rman/bak/20140228_full_PDB_115018_1_aap1ncc6.bak
 
Backup Set          73685  28-FEB-14       

Backup Piece      73685  28-FEB-14          /home/oracle/app/product/11.2.0/db_1/dbs/c-1778314713-20140228-00
 
RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of delete command at 03/07/2014 01:02:57

RMAN-06091: no channel allocated for maintenance (of an appropriate type)

在删除obsolete的时候出现问题,RMAN-06091表示分配channel出现了问题。于是,问题原因思路就出现了:根源在于删除obsolete的时候报错,长期以来脚本不能成功删除过期备份,最后备份文件撑满文件系统。
 
那么,究竟是为什么出现这个问题呢?

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

转载注明出处:https://www.heiqu.com/24500692cc597e84247be310bc3dea4e.html