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 | 密码加密 |
| 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 ****** 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 性能影响
| 组合 | CPU | I/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. 最佳实践
- 生产用压缩+加密:节省空间+保护数据
- MEDIUM 算法:性能与压缩比平衡
- AES256 加密:安全性高
- TDE 透明加密:避免密码管理
- dual 模式:TDE + 密码双保险
- 备份 Wallet:保护密钥
- 监控压缩比:评估效果
- 并行压缩:提升性能
- Image Copy 不压缩:仅 Backupset 支持
- 定期测试恢复:验证加密备份可用
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/