磁盘备份只能用BASIC压缩算法,其他如MEDIUM/HIGH在纯磁盘环境下静默失效;必须配置CONFIGURE COMPRESSION ALGORITHM 'BASIC'并搭配AS COMPRESSED BACKUPSET或全局压缩设置,再通过V$RMAN_BACKUP_JOB_DETAILS验证COMPRESSION_RATIO≥2.0才算生效。

磁盘备份只能用 BASIC,其他算法会静默失效
如果你用的是纯磁盘备份(DEVICE TYPE DISK),CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' 或 'HIGH' 看似能执行成功,但实际不会压缩——RMAN 会忽略它们,只走默认的空块过滤逻辑。查 V$RMAN_BACKUP_JOB_DETAILS 会发现 OUTPUT_BYTES_DISPLAY 和 INPUT_BYTES_DISPLAY 几乎相等,COMPRESSION_RATIO 接近 1.0。
BASIC 是唯一被磁盘设备真正支持的二进制压缩算法,基于 LZ77 变种,CPU 开销低,压缩比通常在 2x~3x。它和 NULL / UNUSED BLOCK 压缩不冲突,是叠加生效的:前者跳过空块,后者对剩余块做二进制压缩。
- 执行
CONFIGURE COMPRESSION ALGORITHM 'BASIC'后,必须搭配BACKUP AS COMPRESSED BACKUPSET或全局配置CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET才能触发 -
CONFIGURE COMPRESSION ALGORITHM CLEAR会恢复为默认BASIC,不是“关闭压缩” - 不要信
SHOW COMPRESSION ALGORITHM单独输出的结果,一定要结合V$RMAN_BACKUP_JOB_DETAILS中的COMPRESSION_RATIO验证是否真生效
LOW/MEDIUM/HIGH 只在配合介质管理器时有效
这些算法依赖 Oracle Secure Backup(OSB)或第三方介质管理器(如 NetBackup、Commvault)。纯磁盘环境里设了也白设,RMAN 不报错,但日志里会有类似 “compression algorithm not supported for disk device” 的隐式提示(需开 debug 日志才可见)。
如果你的备份目标是磁带库或通过介质管理器写入 NAS,且已部署对应插件,再考虑这些选项。其中 ZLIB(Oracle 11g+)比老版 BZIP2 快约 40%,但压缩比略低;HIGH 虽省空间,但 CPU 消耗陡增,可能拖慢备份窗口。
-
LOW:适合高吞吐、低 CPU 场景,压缩比约 1.5x~2x -
MEDIUM:平衡点,常见于 OSB 环境,默认推荐值 -
HIGH:仅建议在存储成本远高于 CPU 成本的离线归档场景使用
别只看文件大小,OUTPUT_BYTES_DISPLAY 才是真实指标
文件系统级压缩(ZFS、NetApp、NFS 压缩)会掩盖 RMAN 是否真做了二进制压缩。你看到备份文件变小了,可能只是 ZFS 在写入时自动压的,RMAN 层面仍是未压缩流。
唯一可靠验证方式是查视图:SELECT INPUT_BYTES_DISPLAY, OUTPUT_BYTES_DISPLAY, COMPRESSION_RATIO FROM V$RMAN_BACKUP_JOB_DETAILS WHERE START_TIME > SYSDATE - 1/24 ORDER BY START_TIME DESC;
-
OUTPUT_BYTES_DISPLAY显著小于INPUT_BYTES_DISPLAY(比如相差 2.5 倍以上),说明BASIC压缩生效 -
COMPRESSION_RATIO≥ 2.0 才算达到预期, - 注意:即使没配
BASIC,NULL和UNUSED BLOCK压缩也会让OUTPUT_BYTES_DISPLAY略小,但幅度有限(通常 ≤ 1.3x)
压缩带来的代价:CPU、时间、恢复延迟都得算进去
启用 BASIC 后,备份过程 CPU 使用率明显升高,单通道备份耗时增加 15%~30%,尤其在高水位线以下空块少、数据密集的表空间上更明显。恢复时也要多一道解压流程,比非压缩备份慢 10%~20%。
- 如果备份窗口紧张,优先保证完成,而非强求压缩
- OLTP 系统建议用
BASIC+ 并行通道(PARALLELISM)摊薄单核压力 - 归档备份(冷数据)可考虑
HIGH+ 低优先级调度,避开业务高峰 - 千万别在同一个节点同时跑高负载应用和
HIGH压缩备份——内存和 CPU 争抢会导致两者都卡住
实际生效的关键就两件事:磁盘环境只认 BASIC,且必须显式声明压缩意图(命令里加 AS COMPRESSED BACKUPSET 或全局配置 BACKUP TYPE TO COMPRESSED BACKUPSET);所有“看起来设了却没效果”的情况,90% 出在没查 V$RMAN_BACKUP_JOB_DETAILS 确认真实压缩比。


















