Oracle 备份压缩与加密

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密码加密
DualTDE + 密码

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 ****** 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 ******

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

4. 恢复加密备份

4.1 解密密码

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

4.2 TDE 自动解密

-- TDE Wallet 打开后自动解密
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY ******
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 性能影响

组合CPUI/O空间
仅压缩
仅加密
压缩+加密

6. 多租户与备份加密

6.1 PDB 级加密

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

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

6.2 CDB 级加密

-- CDB 级 TDE
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY ****** 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 ******

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

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

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 ******

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/