必须同时配置configure compression algorithm 'basic'和as compressed backupset才生效,仅写后者无效;磁盘备份仅支持basic算法,且需企业版,否则静默忽略。
只配 backup as compressed backupset 不会压缩,必须同时设置 configure compression algorithm 'basic' 才生效。
为什么 BACKUP AS COMPRESSED BACKUPSET 备份文件没变小?
这不是命令写错了,而是 RMAN 根本没调用压缩逻辑。常见原因有三个:
-
CONFIGURE COMPRESSION ALGORITHM没设,或设成了'MEDIUM'/'HIGH'—— 这些在纯磁盘备份(DEVICE TYPE DISK)下被静默忽略 - 你用的是 Standard Edition ——
AS COMPRESSED BACKUPSET直接被忽略,不报错也不压缩 - 底层文件系统(如 ZFS/NFS)已开启透明压缩,掩盖了 RMAN 是否真压缩,导致你误判
.bkp文件大小
磁盘备份该用哪个 COMPRESSION ALGORITHM?
Oracle 12c+ 支持 'BASIC'、'LOW'、'MEDIUM'、'HIGH',但磁盘备份只认 'BASIC':
- 执行
CONFIGURE COMPRESSION ALGORITHM 'BASIC';—— 这是唯一兼容磁盘的选项 -
'BASIC'基于 LZ77 变种,CPU 开销低,日常生产压缩比通常 2x~3x - 别试
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';——SHOW COMPRESSION ALGORITHM可能显示它,但实际不生效 - 想确认当前配置,运行
SHOW COMPRESSION ALGORITHM;
怎么验证压缩真的起了作用?
别只看 .bkp 文件大小 —— 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;
-
OUTPUT_BYTES_DISPLAY明显小于INPUT_BYTES_DISPLAY,才算 RMAN 级压缩成功 -
COMPRESSION_RATIO > 1.0表示有收益;≤ 1.0 说明基本没压(比如归档日志、加密列、频繁更新的事务表)
真正起效的压缩依赖两件事:企业版 + BASIC 算法显式配置。文件系统压缩、备份命令里加 AS COMPRESSED BACKUPSET、甚至 CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET 都只是辅助项,缺一不可。











