Skip to content

SBT_TAPE,scb

浅谈RMAN备份中"Unused Block Compression"使用限制

自从Oracle 10g推出Rman备份机制以来,其中的一个重要特性“空块不作备份”一直都深受DBA和广大客户的喜爱,节约空间以及提高备份效率等等,我也是如此喜欢,但是最近在一个项目上测试EMC备份软件备份时候,发现了一个怪事,具体如下描述:

1)数据库DB1通过EMC备份软件(备份方式为STB_TAPE)备出来大小为:780G。
期间尝试修改过3次参数,包括增量备份level=0,普通全备,filesperset参数取消,备份出来的大小均为780G不变。
2)数据库DB1通过Rman备份到本地硬盘(备份方式为DISK)大小为340G。

经过1和2的测试对比发现了明显的异常,通过第三方软件备份多出来了440G大小,随即进行跟踪分析,结果根据和之前做的清理400多G的数据进行联系,当时只是对数据做delete操作,但是并未做move以及空间回收操作,初步判断此次操作和EMC备份异常有关,在数据清理之前数据库的实际大小为700多G,根据Delete的特性可以判断这删掉的400多G的数据原先占有的数据块为空块,但是处于高水位线之下,属于曾经被使用过的块而且当前处于“不可用”状态,到此猜想,

是不是EMC备份把这些空块也一起备份了?
如果备了,那么为什么rman空数据块不被分的特性没有发挥作用么?

经过一番周折终于发现问题所在,这种现象发生在如下版本:

Oracle Server – Enterprise Edition – Version: 10.2.0.1 to 11.2.0.2(Ludatou.com) – Release: 10.2 to 11.2

而且对任何平台都影响。
而且使用“Unused Block Compression”条件有如下限制:
1)备份集存放方式存放在本地硬盘上
2)为0级备份或者量备份或者全备方式中的备份集的一部分
3)数据文件为本地管理方式
4)没有定义还原点的数据库
5)COMPATIBLE设置为10.2以上
6)数据库版本高于(不等于)10.2.0.1

针对COMPATIBLE对“Unused Block Compression”影响官方文档《Oracle Database Backup and Recovery Reference》解释如下:

Oracle Database Backup and Recovery Reference
11g Release 2 (11.2)
Part Number E10643-04
.
Backup
backupTypeSpec

Note:
If COMPATIBLE is set to 10.2, then only tablespaces created with 10.2 compatibility will be optimized to exclude blocks that do not currently contain data. If COMPATIBLE is set to 11.0.0 or higher, however, then the first backup that produces backup sets after COMPATIBLE is set to 11.0.0 or higher will update the headers of all locally managed datafiles so that all locally managed datafiles can be optimized.

经过以上的解释还不能解释为什么EMC备份会出现异常,
而ORACLE的一段关于OSB(Oracle Secure Backup)的描述,则解释了为什么EMC的备份软件没能使用到“Unused Block Compression”特性原因:

When backing up to a media manager that is not Oracle Secure Backup, RMAN copies all the blocks regardless of whether they contain data or not.

就是说再使用MML(Media Management Layer)连接第三方备份软件的方式(包含我们熟悉的赛门铁克的NBU,康孚,IBM的TSM等备份软件)备份数据库,在除了oracle原厂的备份软件Oracle Secure Backup之外都不能够使用到“Unused Block Compression”的特性,到此我们也终于明白为什么EMC备份软件备份出来的ORACLE数据为什么和实际的数据量不一致。

如果不小心使用了原厂之外的第三方备份软件,那么只能寻求其他的解决方案。
解决方案:
1)对相关的datafile/tablespace进行空间回收工作
2)对delete频繁的对象进行move操作
3)对DML操作频繁的大索引定期进行rebuild操作
4)换OSB(Oracle Secure Backup)吧
5)用Rman的方式备到本地,再用files backup的方式备份到磁带(弃用MML的SBT_TAPE备份方式),比如TSM
6)针对“Unused Block Compression”限制的条件进行设置处理