rman高级压缩在oracle 19c磁盘备份中完全无效,仅当使用sbt_tape设备、企业版、已授权advanced compression选项、配置兼容介质管理器且显式设置算法时,compression_ratio才可能超3.0。

RMAN高级压缩(Advanced Compression)在Oracle 19c磁盘备份中完全不生效,配置了也白配——除非你用的是SBT_TAPE设备并已部署兼容的介质管理器。
CONFIGURE COMPRESSION ALGORITHM 'HIGH' 在 DISK 上静默失效
很多人执行了 CONFIGURE COMPRESSION ALGORITHM 'HIGH' 后发现 BACKUP AS COMPRESSED BACKUPSET 生成的文件大小几乎没变,COMPRESSION_RATIO 始终是 1.0~1.2。这不是命令写错了,而是 Oracle 19c 的设计限制:
- 磁盘设备(
DEVICE TYPE DISK)只认'BASIC'算法,'LOW'/'MEDIUM'/'HIGH'全部被忽略,不报错也不压缩 - 即使数据库已启用 Advanced Compression 选件(
SELECT * FROM v$option WHERE parameter = 'Advanced Compression'返回TRUE),磁盘路径仍绕过压缩引擎 - Standard Edition 下连
'BASIC'都静默跳过,只有 Enterprise Edition 支持
真正启用 Advanced Compression 的四个硬性条件
缺一不可,否则 COMPRESSION_RATIO 不会突破 3.0:
- 数据库必须是
Enterprise Edition,且已安装并启用Advanced Compression选项 - 备份必须走
SBT_TAPE设备类型:CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE - 已部署并正确配置兼容的介质管理器(如 Oracle Secure Backup、NetBackup、Commvault),且其 agent 支持 Advanced Compression 接口
- 显式设置算法:
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM'(注意:'HIGH'在部分旧版 MML 中不被识别)
验证是否真在用 Advanced Compression
别看 .bkp 文件大小,查 V$RMAN_BACKUP_JOB_DETAILS 才算数:
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 > 3.0是关键门槛(BASIC通常只到2.0~3.0) -
OUTPUT_BYTES_DISPLAY必须显著小于INPUT_BYTES_DISPLAY -
STATUS = 'COMPLETED'且无RMAN-03009或ORA-19554类错误
磁盘环境想省空间?务实做法只有两个
别折腾 'HIGH',它在 DISK 上就是个摆设:
- 用
CONFIGURE COMPRESSION ALGORITHM 'BASIC'+BACKUP AS COMPRESSED BACKUPSET,这是磁盘唯一有效的压缩路径 - 配合文件系统级压缩(ZFS、NetApp、NFS 压缩),但要注意:它会掩盖 RMAN 是否真压缩,导致
OUTPUT_BYTES_DISPLAY看似没变小
最常被忽略的一点:即使所有配置都对,如果备份数据本身高度随机(比如大量加密 LOB、频繁更新的归档日志块),COMPRESSION_RATIO 依然会卡在 1.0 附近——压缩不是万能的,它依赖数据可压性。











