必须确认tde wallet状态为open,否则rman备份中加密表空间数据块仍为明文;需通过select status from v$encryption_wallet验证,若非open则执行alter system set wallet open identified by;且sqlnet.ora中encryption_wallet_location须指向正确权限的ewallet.p12。
备份前必须确认 tde wallet 已 open
rman 对加密表空间的备份不额外要求特殊命令,但前提是数据库已启用 tde 且 v$encryption_wallet 状态为 open。否则 backup database 会成功执行,但加密表空间的数据块在备份集中仍以明文形式存在(即未被 rman 加密),失去双重保护意义。
检查方式:SELECT STATUS FROM V$ENCRYPTION_WALLET; 返回 OPEN 才算就绪;若为 CLOSED 或 NOT_AVAILABLE,需先执行:ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "your_wallet_password";
-
sqlnet.ora中的ENCRYPTION_WALLET_LOCATION必须指向含主密钥的ewallet.p12(非cwallet.sso),否则 OPEN 操作会失败 - Wallet 路径若配置错误或权限不对(如 Oracle 进程无法读取),
ORA-28365: wallet is not open会在后续备份中报出 - 首次创建主密钥用
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY ...,仅执行一次;重复执行会重置密钥,导致旧加密数据不可解密
RMAN 备份命令本身无需改动
对已启用 TDE 表空间的数据库,直接运行标准备份命令即可:BACKUP DATABASE PLUS ARCHIVELOG;。RMAN 会自动识别哪些数据文件属于加密表空间,并按规则处理:
- 加密表空间中的块:直接读取密文块,原样写入 backupset(不二次解密),因此备份集内仍是加密形态
- 未加密表空间中的块:RMAN 对其明文块执行加密(默认 AES128),最终 backupset 全部内容均受 RMAN 加密保护
- 列级 TDE 不影响行为,但会导致该列在 backupset 中出现双重加密(TDE 层 + RMAN 层)
注意:SET ENCRYPTION ON 或 CONFIGURE ENCRYPTION FOR DATABASE ON 控制的是 RMAN 层加密开关,与 TDE 是否启用无关——即使表空间已加密,若未开启 RMAN 加密,未加密表空间的数据在 backupset 中仍是明文。
验证备份是否真正加密了敏感数据
不能只看备份命令是否执行成功,要验证 backupset 文件内容是否不可读:
- 用
strings /path/to/backup.bkp | head -20查看明文痕迹:若输出中包含可识别的业务字段(如姓名、身份证号片段),说明该 backupset 未启用 RMAN 加密,或 Wallet 未 OPEN 导致加密表空间未被正确识别 - 查询
RC_BACKUP_SET视图(需恢复目录)或V$BACKUP_SET(控制文件中)确认ENCRYPTED列为YES - 关键判断点:TDE 表空间的 backupset 片是否同时满足「TDE 加密」+「RMAN 加密」?只有两者叠加,才能确保即使 backupset 泄露,攻击者也无法绕过任一层解密
常见误判:看到 V$ENCRYPTION_WALLET.STATUS = OPEN 就以为万事大吉——其实这只是 TDE 层就绪,RMAN 加密仍需单独开启,且依赖用户权限(如 ADMINISTER KEY MANAGEMENT)。
恢复时最容易忽略的密钥一致性
还原含加密表空间的 backupset 时,RMAN 不会主动校验当前 Wallet 中的主密钥是否与备份时一致。若密钥已被轮换或 Wallet 被重建,恢复过程可能静默完成,但打开数据库后访问加密表空间会报 ORA-28365 或 ORA-28374。
- 恢复前务必确认:
SELECT * FROM V$ENCRYPTION_KEYS WHERE KEY_ID = (SELECT KEY_ID FROM V$ENCRYPTION_WALLET);的输出与备份时间点匹配 - 生产环境建议将
ewallet.p12和对应口令纳入配置管理,每次密钥轮换后同步更新备份策略文档 - 跨平台传输(如 Linux 备份 → Windows 恢复)时,Wallet 格式(
ewallet.p12)兼容,但路径、权限、Oracle Home 字符编码差异可能导致 OPEN 失败
真正麻烦的不是备份怎么做,而是恢复时发现 Wallet 丢了、口令记错了、或者密钥版本对不上——这些都得靠定期恢复演练暴露,而不是等故障发生才补救。











