Oracle 备份压缩与加密

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai
文档版本:v1.0 / 2026-07


1. 概述

RMAN 支持备份压缩和加密[1],保护数据并节省空间:

特性 作用
压缩 节省存储空间
加密 保护备份数据安全
透明加密 TDE 集成
密码加密 简单实现

2. 备份压缩

2.1 压缩算法

算法 说明 压缩率 速度
BASIC 基础(免费) 中 中
LOW 低压缩 低 快
MEDIUM 中等(默认) 中 中
HIGH 高压缩 高 慢

2.2 配置压缩

-- 默认压缩算法
RMAN> CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';

-- 或指定算法
RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH';

2.3 压缩备份

-- 压缩备份
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

-- Image Copy 不支持压缩
RMAN> BACKUP AS COPY DATABASE;  -- 不压缩

2.4 压缩效果

-- 查看压缩比
SELECT 
  bs_key,
  backup_type,
  bytes / 1024 / 1024 AS mb,
  compressed
FROM rc_backup_set
ORDER BY bs_key DESC;

3. 备份加密

3.1 加密模式

模式 说明
Transparent 集成 TDE
Password 密码加密
Dual TDE + 密码

3.2 配置加密

-- 1. 配置默认加密
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';

-- 2. 关闭
RMAN> CONFIGURE ENCRYPTION FOR DATABASE OFF;

3.3 密码加密

-- 设置密码
RMAN> SET ENCRYPTION ON IDENTIFIED BY pwd ONLY;

-- 备份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

3.4 透明加密(TDE)

-- 1. 配置 TDE Wallet
-- 2. RMAN 自动使用 TDE
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

-- 3. 备份自动加密
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

3.5 Dual 模式

-- 同时使用 TDE 和密码
RMAN> SET ENCRYPTION ON IDENTIFIED BY pwd;

-- 恢复时需密码(或 TDE Wallet)
RMAN> SET DECRYPTION IDENTIFIED BY pwd;

4. 恢复加密备份

4.1 解密密码

RMAN> SET DECRYPTION IDENTIFIED BY pwd;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

4.2 TDE 自动解密

-- TDE Wallet 打开后自动解密
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY wallet_pwd;
RMAN> RESTORE DATABASE;

5. 压缩 + 加密组合

5.1 同时使用

RMAN> CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';

RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

5.2 性能影响

组合 CPU I/O 空间
无 低 高 高
仅压缩 中 中 低
仅加密 中 高 高
压缩+加密 高 中 低

6. 多租户与备份加密

6.1 PDB 级加密

-- PDB 级 TDE
ALTER SESSION SET CONTAINER = hrpdb;
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY wallet_pwd;

-- PDB 备份自动加密
RMAN> BACKUP PLUGGABLE DATABASE hrpdb;

6.2 CDB 级加密

-- CDB 级 TDE
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY wallet_pwd WITH BACKUP;

7. 监控加密备份

7.1 查看加密

SELECT 
  bs_key,
  backup_type,
  encrypted,
  compression_alg,
  encryption_alg
FROM rc_backup_set
ORDER BY bs_key DESC;

7.2 查看压缩

SELECT 
  file#,
  bytes,
  bytes_displayed,
  compression_ratio
FROM rc_backup_datafile
ORDER BY file#;

8. 常见坑与排错

8.1 压缩备份慢

修复:

-- 1. 调整算法
RMAN> CONFIGURE COMPRESSION ALGORITHM 'LOW';

-- 2. 增加并行
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

-- 3. 检查 CPU

8.2 加密备份无法恢复

修复:

-- 1. 检查密码
RMAN> SET DECRYPTION IDENTIFIED BY pwd;

-- 2. 检查 TDE Wallet
SELECT status FROM v$encryption_wallet;

-- 3. 打开 Wallet
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY wallet_pwd;

8.3 ORA-19914: 加密不支持

修复:

-- 1. 检查 Advanced Security 选项
SELECT * FROM v$option WHERE parameter='Advanced Security';

-- 2. Image Copy 不支持加密,用 Backupset
RMAN> BACKUP AS BACKUPSET DATABASE;

8.4 Wallet 丢失

现象:无法解密备份。

修复:

# 1. 从备份恢复 Wallet
cp /backup/wallet.p12 /u01/wallet/

# 2. 或使用密码模式(dual)
RMAN> SET DECRYPTION IDENTIFIED BY pwd;

8.5 压缩率低

修复:

-- 1. 检查数据类型
-- 已压缩数据(LOB)压缩率低

-- 2. 使用 HIGH 压缩
RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH';

-- 3. 表压缩
ALTER TABLE big_table COMPRESS FOR OLTP;

9. 最佳实践

  1. 生产用压缩+加密:节省空间+保护数据
  2. MEDIUM 算法:性能与压缩比平衡
  3. AES256 加密:安全性高
  4. TDE 透明加密:避免密码管理
  5. dual 模式:TDE + 密码双保险
  6. 备份 Wallet:保护密钥
  7. 监控压缩比:评估效果
  8. 并行压缩:提升性能
  9. Image Copy 不压缩:仅 Backupset 支持
  10. 定期测试恢复:验证加密备份可用

10. 参考资料

[1] Oracle Database Backup and Recovery User’s Guide 19c, “RMAN Backup Encryption”
https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/

[2] Oracle Database Advanced Security Guide 19c, “Backup Encryption”
https://docs.oracle.com/en/database/oracle/oracle-database/19/asoag/