backup as compressed backupset 本身不压缩,需配合 configure compression algorithm 'basic' 才生效;standard edition 不支持任何压缩算法,配置后静默跳过;disk 设备下仅 'basic' 有效,'low'/'medium'/'high' 仅适用于 sbt_tape;文件系统级压缩会掩盖 rman 压缩效果;验证须查 v$rman_backup_job_details 中 compression_ratio > 1.0。

BACKUP AS COMPRESSED BACKUPSET 本身不压缩,必须配合 CONFIGURE COMPRESSION ALGORITHM 'BASIC' 才真正生效;如果你用的是 Standard Edition,哪怕配了也静默跳过——压缩根本不会启动。
为什么 backup as compressed backupset 文件大小没变?
这不是命令写错了,是 RMAN 压缩没真正触发。常见原因有三个:
-
CONFIGURE COMPRESSION ALGORITHM没设置,或设成了'LOW'/'MEDIUM'/'HIGH'—— 这些只在 SBT_TAPE(如云备份、OSB)下有效,纯DEVICE TYPE DISK环境下被完全忽略 - 你用的是 Oracle Standard Edition:所有压缩算法均不支持,配置后无报错但也不压缩
- 文件系统级压缩(如 ZFS、NetApp、NFS 压缩)已开启,掩盖了 RMAN 是否真实压缩,导致
.bkp文件大小看起来没变化
如何确认压缩是否真实生效?
别看备份文件大小,得查 RMAN 内部元数据。执行完备份后立即运行:
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:比如3.2表示逻辑输入是输出的 3.2 倍,说明有压缩收益 OUTPUT_BYTES_DISPLAY :写入磁盘的实际字节数确实减少了-
STATUS = 'COMPLETED'且无报错:排除权限、路径、闪回区满等干扰
如果 COMPRESSION_RATIO = 1.0,大概率是算法没启用,或数据本身不可压(如已加密 LOB、归档日志中大量随机变更块)。
配置磁盘压缩的实操步骤(仅 Enterprise Edition 有效)
以下操作需在 RMAN 连接目标数据库后执行:
- 先检查当前配置:
SHOW COMPRESSION ALGORITHM;—— 若不是'BASIC',下一步必须改 - 启用压缩算法:
CONFIGURE COMPRESSION ALGORITHM 'BASIC'; - (可选但推荐)统一默认备份类型:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET; - 注意:
CONFIGURE CONTROLFILE AUTOBACKUP ON必须显式配置,否则自动备份可能静默失效
BASIC 是磁盘唯一支持的算法,基于 LZ77,开销低,压缩比通常 2x–5x;ADVANCED 需额外许可且仍依赖介质管理器,磁盘不支持。
容易被忽略的关键点
压缩不是“开关式”功能:它依赖企业版许可、明确的算法配置、以及数据本身的可压缩性。即使所有配置都对,遇到大量加密 LOB 或高熵归档日志,COMPRESSION_RATIO 也可能接近 1.0——这时候再调参数也没用,得换存储层压缩或归档策略。











