oracle rman备份集默认为明文,即使启用tde也需显式配置加密策略;必须确保tde wallet状态为open(通过v$encryption_wallet确认),否则configure encryption for database on等命令静默失效,备份仍为明文且无警告。

Oracle RMAN 备份集默认是明文的,哪怕数据库已启用 TDE —— 这是常见误解。必须显式配置加密策略,否则备份文件可被直接读取。
确认 TDE Wallet 已 OPEN,否则 configure encryption for database on 无效
RMAN 的透明加密(CONFIGURE ENCRYPTION FOR DATABASE ON)依赖 TDE wallet 处于 OPEN 状态,不是“配了就生效”。wallet 关闭时,该配置静默失效,备份仍是明文,且 RMAN 不报错、不警告。
- 执行
SELECT * FROM V$ENCRYPTION_WALLET;,确认STATUS列为OPEN,不是CLOSED或NOT_AVAILABLE - wallet 路径由
sqlnet.ora中的ENCRYPTION_WALLET_LOCATION指定,RMAN 命令无法覆盖 - 推荐用
cwallet.sso(AUTO_LOGIN),避免每次数据库重启后手动执行ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY ... - 若用
ewallet.p12,权限必须是700,所有者必须是oracle用户,且不能放在$ORACLE_HOME下(升级可能覆盖)
set encryption on identified by 只对紧随其后的 backup 生效
这是最易出错的操作方式:命令不是配置开关,而是给当前 RMAN session 注入一次性凭据。中间插入任何其他 RMAN 命令(如 LIST BACKUP、CROSSCHECK ARCHIVELOG ALL、甚至 SHOW ALL)都会导致凭据丢失或覆盖。
- 必须严格按顺序执行:
SET ENCRYPTION ON IDENTIFIED BY "mypass" ONLY→BACKUP DATABASE(中间不能有任何其他 RMAN 命令) - 密码严格区分大小写、首尾空格;恢复时必须一字不差,否则报
ORA-19913 - 同一 session 内多次执行
SET ENCRYPTION,只有最后一次生效 - 恢复时必须先执行
SET DECRYPTION IDENTIFIED BY "mypass",再RESTORE;漏掉这步直接报错,且不提示输入密码
AES256 算法切换需验证目标版本兼容性
CONFIGURE ENCRYPTION ALGORITHM 'AES256' 看似简单,但跨版本 restore 极易失败。19c 加密的备份在 21c 上可能报 ORA-28374: typed master key not found,根源是密钥派生机制变更。
- 执行前查
SELECT * FROM V$RMAN_ENCRYPTION_ALGORITHMS;,确认IS_AVAILABLE = 'YES' - 旧版本(如 12.1 或未打补丁的 11.2.0.1)可能不支持 AES256,命令静默失败,实际仍走 AES128
- 生产环境升级前,务必用目标数据库版本完整验证:
BACKUP→ 传输备份集 →RESTORE→RECOVER - 不要假设“新版本能读旧版本”,AES256 在 19c 和 21c 间存在不兼容风险
真正麻烦的不是配置命令本身,而是 wallet 状态的隐式依赖、session 凭据的脆弱生命周期,以及算法兼容性的黑盒行为——这些点稍有疏忽,备份就形同未加密。











