AnyBackup
性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询
AnyDATA

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

Oracle RMAN Block Compression 技术以及其对 AnyBackup 备份 Oracle 带来的影响

2023-06-21 1213 0

初识 Oracle RMAN Block Compression

首先,我们了解一下什么是 Oracle Block Compression 块压缩技术?

Oracle 官方文档中对块压缩的描述如下:

About RMAN Block Compression for Backup Sets

RMAN uses two types of block compression when creating backup sets:

  • Unused Block Compression (Supports disk backup and Oracle Secure Backup tape backup)
  • Null Block Compression (Supports all backups)

RMAN block compression is not traditional binary compression. Rather, it is a set of techniques that RMAN uses to altogether avoid backing up certain blocks that are not needed in this backup.

About Unused Block Compression

When employing unused block compression, RMAN skips reading, and backing up, any database blocks that are not currently allocated to some database object. This is regardless of whether those blocks had previously been allocated. So if a database table is dropped, RMAN will not back up the space that was occupied by that table until new objects are created in that space. Unused block compression is used automatically when the following conditions are true:

  • The COMPATIBLE initialization parameter is set to 10.2 or higher.
  • There are currently no guaranteed restore points defined for the database.
  • The data file is locally managed.
  • The data file is being backed up to a backup set as part of a full backup or a level 0 incremental backup.
  • The backup set is created on disk, or Oracle Secure Backup is the media manager.

About Null Block Compression

When employing null block compression, RMAN omits from its output any block that has never contained data. Null block compression is always used with level 0 or full backups that are created in backup set format.

 

理解 Oracle RMAN Block Compression

结合官方文档的描述,可将 Oracle 块压缩技术总结如下:

1. 在使用 RMAN 将数据库备份为 backup sets 时,必然使用块压缩技术其中的一种;

2. RMAN 的 block compression 区别于 binary compression。binary compression 指的是 RMAN 备份时开启的压缩参数实现对备份数据的压缩,而 block compression 是为了备份时跳过不需要备份的数据块的技术。

3. Unused Block Compression,即未使用块压缩,在备份时会跳过当前不存在数据的数据块。在满足如下条件时,Oracle 会自动使用未使用块压缩方式:

1)数据库的 COMPATIBLE 参数为 10.2 或更高版本;

2)数据库当前没有担保还原点;
--引申:restore point 分为 normal restore point 和 guaranteed restore point,该技术为数据库闪回技术,需手动创建还原点,如:create restore point POINT_NAME guarantee flashback databse;

3)数据文件使用本地管理方式;
--引申:表空间管理分为字典管理(Dictionary-Management Tablespace)和本地管理(Locally Managed Tablespace);9i R2后默认使用本地管理,性能更优。

4)数据库使用full或者 level 0 将数据文件备份到备份片;

5)备份集备份到 disk,或者使用 Oracle Secure Backup 软件进行备份;

并且,Unused Block Compression 只支持备份集备份到disk,或者使用Oracle Secure Backup软件进行备份。

4. Null Block Compression,即空块压缩,在备份时跳过从未写入数据的块。level 0的备份时使用。并且,Null Block Compression 支持所有以备份集形式的备份,包括第三方软件备份。

 

关于备份的影响

1. 数据块的差别

通过块压缩的原理发现,两种块压缩技术针对跳过的数据块存在差异:当前非空的数据块和从未使用的数据块。这两种数据块有什么差别?

假设一个 Oracle 数据库刚部署完成,经过业务运行一段时间的增删查改之后,变化如下:

其中,代表从未使用的空数据块,代表当前写入了数据的数据块,代表写入了数据后数据删除,当前为空的数据块。

那么,本例中采用 Unused Block Compression 技术的备份,备份的数据块个数为 7 个;而采用 Null Block Compression 技术的备份,备份的数据块个数为 12 个。

即,采用 Null Block Compression 技术的备份任务备份的数据量 ≥ 采用 Unused Block Compression 技术的备份任务。

 

2. 对备份带来的影响的思考

至此,我们可以得知,AnyBackup (或其他第三方采用SBT通道进行备份的软件)在对数据库进行定时备份时,必然使用 Null Block Compression 空块压缩技术。

Q:那么使用这种方式会存在哪些场景的问题,或者说不同表现?

A:基于块压缩技术的差异,有出现如下场景问题:

  1. 数据文件很大(dba_data_files),实际数据很小(dba_segments),备份性能对比本地 RMAN 备份性能更差。
  2. 备份数据量大于数据库实际数据量(dba_segments)+归档日志大小;对比本地 RMAN 备份数据量更大。

结合第一章节介绍的 Oracle block compression 技术,可得知原因:

场景1:第三方非 disk 通道备份时,采用 Null Block Compression 技术,由于数据文件很大,扫描数据块需要一定的耗时,对比本地备份,由于使用的块压缩技术不一样,备份的数据量更多,进而导致备份任务整体耗时比本地备份时间更长,从而表现为“性能更差”。

场景2:Oracle 数据库实际数据量 dba_segments 中仅统计当前已有数据的块,而 Null Block Compression 不会跳过那些历史写入了数据当前为空的数据块的备份,从而出现备份的数据量会比实际数据量+归档日志更大的情况。该场景通常出现于 Oracle 数据库做了大批量数据清理之后的环境。

3. 场景模拟实测
如,上述描述的场景2实测如下:

删除数据后:

备份结果:



4. 结论
基于快压缩技术备份跳过的数据块存在区别,会导致 AnyBackup 定时备份 Oracle 数据库的数据量比 RMAN 本地备份数据量更大,比 dba_segments + 归档日志数据量更大;耗时比本地 RMAN 备份耗时更长。

其他补充
Oracle RMAN Block Compression 与 Binary Compression 的区别:

  • 前者主要使用于备份是跳过数据块的检测,且块压缩方式无法人为修改,Oracle 会根据满足的条件自行选择;
  • 后者用于备份数据的压缩,节省备份存储空间。对应 RMAN 配置中的 backup to compressed backupset 配置,其也对应于 AnyBackup Oracle 定时备份任务中的“数据库高级压缩”选项,可以人为选择开启或者关闭。该选项开启后会影响备份性能,故若需考虑性能,不建议开启该参数。

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学

拨打400

免费销售咨询热线

400 8216055

7*24 小时免费售后服务热线

400 880 1569

购买咨询

购买咨询

售后服务

售后服务

返回顶部

为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号