as compressed backupset 不生效是因为 rman 默认不压缩,实际压缩依赖 configure compression algorithm 配置及介质管理器支持;磁盘备份仅 basic 算法有效,且需企业版,否则静默忽略。
为什么 as compressed backupset 有时不生效
oracle rman 的压缩不是“开个开关就自动变小”,它依赖底层压缩算法和数据可压缩性。如果备份集体积没变化,大概率是没真正启用压缩——rman 默认不压缩,as compressed backupset 只是显式声明意图,但实际是否压缩,由 configure compression algorithm 和介质管理器(如 sbt)或磁盘写入路径共同决定。
常见错误现象:BACKUP AS COMPRESSED BACKUPSET DATABASE 执行成功,但生成的 .bkp 文件大小和未加 COMPRESSED 时几乎一样。
- 检查当前压缩配置:
RMAN> SHOW COMPRESSION ALGORITHM;—— 如果返回’BASIC’以外的值(比如’LOW’),但你用的是非 Oracle Secure Backup(OSB)或非 Media Manager 环境,BASIC是唯一被磁盘备份支持的算法 -
BASIC压缩仅在 Enterprise Edition 中可用;Standard Edition 下即使写了AS COMPRESSED BACKUPSET,也会静默忽略 - 如果目标设备是 NFS 或某些 NAS,文件系统级压缩(如 ZFS、NetApp)可能干扰 RMAN 自身压缩判断,建议先关掉上层压缩再测试
如何确认压缩真的起了作用
不能只看文件大小,RMAN 的压缩是逻辑块级去重+算法压缩,同一数据多次备份体积可能不同。关键要看备份集元数据里的压缩比和实际 I/O 节省。
执行完备份后,立即查视图:
SELECT INPUT_BYTES_DISPLAY, OUTPUT_BYTES_DISPLAY, COMPRESSION_RATIO, STATUS FROM V$RMAN_BACKUP_JOB_DETAILS WHERE START_TIME > SYSDATE - 1/24 ORDER BY START_TIME DESC;
注意:COMPRESSION_RATIO 大于 1.0 才表示有压缩收益;小于或等于 1.0 说明基本没压(可能是高熵数据,如已加密/已压缩的 LOB,或归档日志本身含大量随机变更)。
- 压缩比受数据类型影响极大:含大量重复空字段、固定长度字符、未更新的索引叶块,压缩比常达 3x~5x;而频繁更新的事务表、加密列、
BLOB,可能只有 1.1x -
OUTPUT_BYTES_DISPLAY是写入磁盘的实际字节数,比INPUT_BYTES_DISPLAY小才算真压缩;别被文件系统显示的“已分配空间”误导
CONFIGURE COMPRESSION ALGORITHM 各选项的实际效果差异
Oracle 12c+ 支持多种算法,但不是所有都适用于磁盘备份,也不是越高级越快。
-
CONFIGURE COMPRESSION ALGORITHM ’BASIC’:唯一兼容磁盘备份的选项,使用 LZ77 变种,CPU 开销低,压缩比中等(通常 2x~3x),推荐日常使用 -
’LOW’ / ’MEDIUM’ / ’HIGH’:仅对使用 Oracle Secure Backup 或第三方 Media Manager(如 NetBackup、Commvault)时有效;直接写磁盘时会被降级为BASIC,且不会报错 -
’ZLIB’和’BZIP2’:19c+ 引入,需额外 license(Advanced Compression),且同样**仅限 Media Manager 场景**;磁盘备份下写入失败或回退,取决于COMPATIBLE参数和补丁版本
简单记:纯磁盘环境,只配 BASIC,其他都是摆设。
备份脚本里写 AS COMPRESSED BACKUPSET 还是靠 CONFIGURE?
两者可以共存,但优先级不同:CONFIGURE COMPRESSION ALGORITHM 是全局开关,AS COMPRESSED BACKUPSET 是单条命令的强制声明。如果全局禁用了压缩(CONFIGURE COMPRESSION ALGORITHM ’NONE’),那加 AS COMPRESSED 也没用;反之,如果全局配了 BASIC,不写 AS COMPRESSED 也能压缩——但强烈建议显式写出。
- 显式写
AS COMPRESSED BACKUPSET是防御性写法:避免因 DBA 忘记或误改全局配置导致备份“裸奔” - 不写的话,一旦某次
CONFIGURE被清空(比如 restore controlfile 后未重配),后续备份全无压缩,问题延迟暴露 - 混合策略可行:全局
CONFIGURE COMPRESSION ALGORITHM ’BASIC’+ 每次备份命令带AS COMPRESSED BACKUPSET,双保险
真正容易被忽略的是:压缩只作用于 backupset,不影响 COPY、ARCHIVELOG DELETE INPUT 或 DUPLICATE 的中间传输流。那些环节该压缩还得自己处理。










