RMAN备份加密需明确区分全局配置与会话级设置:configure encryption for database on依赖TDE wallet OPEN状态,否则静默生成明文备份;set encryption on identified by仅对紧随其后的backup命令生效,且密码须严格一致。

RMAN备份加密不是“配了就自动生效”,必须明确区分 configure encryption for database on(全局策略)和 set encryption on identified by(会话级临时设置)——混用会导致备份未加密却误以为已保护。
configure encryption for database on 依赖 wallet 状态,关闭即静默失效
启用该配置后,RMAN 所有 backup 操作默认走透明加密,但前提是 TDE wallet 已打开且状态为 OPEN。执行 SELECT * FROM V$ENCRYPTION_WALLET; 必须看到 STATUS = OPEN,否则备份仍为明文,不报错也不警告。
- wallet 路径由
sqlnet.ora中的ENCRYPTION_WALLET_LOCATION决定,RMAN 命令无法覆盖 - 用
cwallet.sso(AUTO_LOGIN)可避免每次重启数据库后手动开 wallet;若用ewallet.p12(PASSWORD-based),必须在数据库启动后立刻执行ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "xxx"; - 即使配置了
configure encryption for database on,wallet 关闭时backup仍生成未加密备份集 —— 这是静默失败,最容易被忽略
set encryption on identified by 只影响紧随其后的 backup 命令
这个命令本质是给当前 RMAN session 注入一个一次性加密凭据,不是持久化配置。它只对下一条(或下几条,直到被 reset encryption 或新 set encryption 覆盖)backup 命令生效。
- 常见错误:先执行
set encryption on identified by "mypass",中间穿插了list backup或crosscheck archivelog all,再执行backup database→ 加密失效,因为 session 凭据可能已被重置或覆盖 - 密码区分大小写、空格,恢复时必须一字不差;多执行几次
set encryption,只有最后一次生效 - 该方式生成的备份可在异机恢复,只要提供相同密码,不依赖源库 wallet —— 适合离线介质归档场景
AES128 / AES192 / AES256 切换前必须验证版本兼容性
算法变更本身简单:configure encryption algorithm 'AES256'; 即可。但实际影响常被低估:
- 不同 Oracle 版本对算法支持不一致:19c 默认支持全部三种,但某些旧补丁集可能不识别
AES256,导致backup报ORA-19913 - 算法变更后,新备份无法用旧版本 Oracle(如 12.1)直接
restore,即使密码正确 —— 错误通常是ORA-28374: typed master key not found -
V$RMAN_ENCRYPTION_ALGORITHMS视图可查当前实例支持的算法列表,务必在生产切换前在目标恢复环境中验证
真正容易被忽略的是 wallet 状态与加密配置的解耦关系:你可以在 wallet 关闭状态下成功执行 configure encryption for database on,也能成功运行 backup,但结果是明文备份。这种“操作成功但功能未生效”的静默行为,是生产环境最危险的盲点。











