暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 10g备份集压缩(Backupset Compression)

原创 eygle 2019-11-28
1558

从Oracle 10g开始,Oracle允许我们对备份集进行压缩,以减少空间耗用,这个特性通过对BACKUP命令伴增加AS COMPRESSED BACKUPSET子句实现。

压缩备份在恢复时无需解压缩,这一特性在以下条件下可能大为有益:

  • 备份存储空间有限;
  • 通过网络备份而带宽有限;
  • 直接备份至磁带、CD、DVD介质不能直接压缩。

可以选择在备份命令里显示指定压缩选项:
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

也可以仅对部分文件进行压缩,例如,对1、5文件压缩备份:
BACKUP AS COMPRESSED BACKUPSET DATAFILE 1,5;

也可以配置RMAN指定压缩选项:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;

但是需要了解的是,压缩备份会消耗更多的CPU资源以及时间,不同的技术只不过是在不同资源间的一种平衡,如何选择依赖于我们的条件及需求。

可以修改一下RMAN的配置参数,以方便测试:

RMAN> configure device type disk backup type to compressed backupset;

old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
new RMAN configuration parameters are successfully stored
released channel: ORA_DISK_1
复制

此时执行备份,备份集将被压缩:

RMAN> backup full filesperset 11 database ;

Starting backup at 29-MAR-05
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=161 devtype=DISK
channel ORA_DISK_1: starting compressed full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00009 name=/data1/oradata/systemfile/bigtbs.dbf
。。。。。。。
input datafile fno=00005 name=/data1/oradata/systemfile/eygle01.dbf
piece handle=/backupset/o1_mf_nnndf_TAG20050329T062814_14k1813y_.bkp 
channel ORA_DISK_1: backup set complete, elapsed time: 00:08:35
channel ORA_DISK_1: starting compressed full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00011 name=/opt/oracle/oradata/eygle/t2k01.dbf
piece handle=/backupset/o1_mf_nnndf_TAG20050329T062814_14k1r4fh_.bkp 
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
Finished backup at 29-MAR-05
复制

注意压缩备耗时为00:08:35 + 00:00:07 = 8:42 = 522s。再来看一下非压缩备份:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO backupset;

old RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM 1;
new RMAN configuration parameters are successfully stored

RMAN> backup full filesperset 11 database ;
Starting backup at 29-MAR-05
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=161 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
input datafile fno=00009 name=/data1/oradata/systemfile/bigtbs.dbf
input datafile fno=00005 name=/data1/oradata/systemfile/eygle01.dbf
piece handle=/backupset/o1_mf_nnndf_TAG20050329T065513_14k2tmx7_.bkp 
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00011 name=/opt/oracle/oradata/eygle/t2k01.dbf
channel ORA_DISK_1: starting piece 1 at 29-MAR-05
channel ORA_DISK_1: finished piece 1 at 29-MAR-05
piece handle=/backupset/o1_mf_nnndf_TAG20050329T065513_14k2y7go_.bkp 
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
Finished backup at 29-MAR-05
复制

非压缩备份耗时为00:01:55 + 00:00:07 = 2:02 = 122s。压缩备份使用的时间是非压缩方式的522 / 122 = 4.28 倍。再来对比一下压缩比率:

$ ls -l
total 2585568
-rw-r-----   1 oracle   dba      190103552 Mar 29 06:36 o1_mf_nnndf_TAG20050329T062814_14k1813y_.bkp
-rw-r-----   1 oracle   dba      1093632 Mar 29 06:36 o1_mf_nnndf_TAG20050329T062814_14k1r4fh_.bkp
-rw-r-----   1 oracle   dba      1130618880 Mar 29 06:57 o1_mf_nnndf_TAG20050329T065513_14k2tmx7_.bkp
-rw-r-----   1 oracle   dba      1302528 Mar 29 06:57 o1_mf_nnndf_TAG20050329T065513_14k2y7go_.bkp
复制

可以知道,压缩备份大小为190103552 + 1093632 = 182.33984375 MB,非压缩备份集为1130618880 + 1302528 = 1079.484375 MB,非压缩较压缩大小为1079.484375/182.33984375 = 5.9倍,即压缩方式大大节省了空间。

测试过程中收集了CPU消耗信息,再来比较一下备份进程的CPU消耗。

压缩备份时CPU消耗如下,大约在26%左右。

   PID USERNAME THR PR NCE  SIZE   RES STATE   TIME FLTS    CPU COMMAND
 15252 oracle    11 10   0  430M  353M cpu01   1:38    0 26.35% oracle
复制

而非压缩模式下CPU消耗如下,大约为16%左右。

   PID USERNAME THR PR NCE  SIZE   RES STATE   TIME FLTS    CPU COMMAND
 15252 oracle    11 52   0  445M  364M sleep   9:07   57 16.43% oracle
复制

可见,压缩模式较非压缩模式多消耗10%左右的CPU。看来选择哪一种模式要依赖你的环境及需要,但是毕竟Oracle提供了更多的可选项给我们。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

TA的专栏
数据库简史
收录22篇内容
DeepSeek与人工智能
收录20篇内容