Oracle 备份加密详解

Oracle 备份加密详解

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


1. 概述

备份加密保护数据安全[1]:

详细见:Oracle 备份压缩与加密


2. 加密模式

2.1 透明加密

- 依赖 Wallet
- 自动加解密
- 无密码
- 推荐

2.2 密码加密

- 密码
- 跨服务器迁移
- 不依赖 Wallet

2.3 双模

- Wallet + 密码
- 灵活

3. 透明加密

3.1 Wallet 配置

# sqlnet.ora
ENCRYPTION_WALLET_LOCATION =
  (SOURCE = (METHOD = FILE)
    (METHOD_DATA = (DIRECTORY = /u01/wallet)))

3.2 启用 Wallet

ADMINISTER KEY MANAGEMENT 
  CREATE KEYSTORE '/u01/wallet' 
  IDENTIFIED BY ******

ADMINISTER KEY MANAGEMENT 
  SET KEY OPEN 
  IDENTIFIED BY ******

ADMINISTER KEY MANAGEMENT 
  SET KEY IDENTIFIED BY ******

3.3 RMAN 配置

CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES256';

3.4 备份

RMAN> BACKUP DATABASE;
# 自动加密

4. 密码加密

4.1 设置

RMAN> SET ENCRYPTION ON IDENTIFIED BY ****** ONLY;
RMAN> BACKUP DATABASE FORMAT '/u01/backup/enc_%U.bkp';

4.2 恢复

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

5. 双模

5.1 设置

RMAN> SET ENCRYPTION ON IDENTIFIED BY ******
-- 不加 ONLY,Wallet 也可用
RMAN> BACKUP DATABASE;

5.2 恢复

- Wallet 可用:自动
- Wallet 不可用:密码

6. 算法

6.1 选项

- AES128
- AES192
- AES256(默认)
- AES256:最安全

6.2 配置

CONFIGURE ENCRYPTION ALGORITHM 'AES256';

7. Data Pump 加密

7.1 透明

expdp scott/tiger ... ENCRYPTION=ALL ENCRYPTION_MODE=TRANSPARENT

7.2 密码

expdp scott/tiger ... ENCRYPTION=ALL 
  ENCRYPTION_MODE=PASSWORD 
  ENCRYPTION_PASSWORD=******

7.3 双模

expdp scott/tiger ... ENCRYPTION=ALL 
  ENCRYPTION_MODE=DUAL 
  ENCRYPTION_PASSWORD=******

详细见:Oracle Data Pump 全集


8. TDE

8.1 列加密

ALTER TABLE employees MODIFY (salary ENCRYPT);
ALTER TABLE employees ADD (credit_card VARCHAR2(50) ENCRYPT);

8.2 表空间加密

CREATE TABLESPACE secure_ts 
  DATAFILE '/u01/oradata/secure01.dbf' SIZE 1G
  ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);

8.3 优势

- 数据加密
- 透明
- 合规

9. 备份安全最佳实践

9.1 加密

- RMAN 加密
- Data Pump 加密
- 传输加密

9.2 访问控制

- 备份文件权限
- Wallet 安全
- 密码管理

9.3 审计

- 备份操作
- 恢复操作
- 访问审计

10. 应用场景

10.1 合规

- 金融
- 医疗
- 个人信息
- 加密备份

10.2 异地

- 备份到异地
- 防泄露
- 加密

10.3 云

- 备份到云
- 加密
- 安全

10.4 跨服务器

- 密码加密
- 不依赖 Wallet
- 迁移

11. 常见坑与排错

11.1 ORA-28365

- Wallet 未打开
- 打开 Wallet

11.2 ORA-28374

- 密钥问题
- 检查 Wallet

11.3 备份无法恢复

- 密码丢失
- Wallet 丢失
- 不可恢复

12. 监控

12.1 Wallet 状态

SELECT * FROM v$encryption_wallet;
-- status: OPEN

12.2 加密备份

SELECT * FROM v$rman_encryption_algorithms;

12.3 审计

SELECT * FROM dba_audit_object 
WHERE obj_name LIKE '%KEY%';

13. 最佳实践

  1. 透明加密:推荐
  2. Wallet 备份:关键
  3. AES256:安全
  4. 密码管理:安全
  5. 访问控制:严格
  6. 审计:完整
  7. 合规:满足
  8. 测试:恢复
  9. 文档:流程
  10. 演练:定期

14. 参考资料

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