oracle 19c rman备份加密需显式配置,tde不自动加密备份集;wallet必须open且status='open',否则备份为明文且无警告;set encryption on identified by仅会话级生效,密码严格匹配;aes256跨版本兼容性差,恢复前须验证。
oracle 19c 的 rman 备份加密不能靠“开了 tde 就自动加密备份”来实现——tde 加密的是数据文件本身(.dbf),而 rman 备份集(.bkp)默认仍是明文,除非你显式启用 rman 层的加密策略。
configure encryption for database on 必须配合 wallet OPEN 状态
这个命令开启的是全局透明加密策略,但它不生效的常见原因是 wallet 没打开。执行 SELECT * FROM V$ENCRYPTION_WALLET; 后,必须看到 STATUS = 'OPEN',否则所有 backup 都是未加密的,且 RMAN 不报错、不警告。
- wallet 路径由
sqlnet.ora中的ENCRYPTION_WALLET_LOCATION决定,RMAN 命令无法覆盖或临时指定 - 用
cwallet.sso(AUTO_LOGIN)可避免每次重启数据库后手动开 wallet;若用ewallet.p12,必须在库启动后立刻执行ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "xxx"; - 权限必须为
700,所有者必须是oracle用户,放$ORACLE_HOME下有被升级覆盖风险
set encryption on identified by 只对紧随其后的 backup 生效
这是会话级口令加密方式,和 wallet 状态无关,但极易因操作顺序出错导致加密失效。
- 必须在
backup命令前执行,中间穿插list backup或crosscheck archivelog all可能重置 session 凭据 - 密码严格区分大小写和空格,恢复时必须一字不差;多次执行
set encryption,只有最后一次生效 - 生成的备份可在异机恢复,只要提供相同密码,不依赖源库 wallet —— 适合离线归档,但不适用于长期跨版本保留
AES256 算法切换后,旧版本 Oracle 可能无法 restore
执行 configure encryption algorithm 'AES256'; 很简单,但实际影响常被低估:
- Oracle 12.1 或某些旧补丁集可能不识别
AES256,备份时报ORA-19913 - 19c 加密的备份集,在 21c 上 restore 可能失败,报
ORA-28374: typed master key not found,根源是密钥派生机制不兼容 - 生产环境做跨版本升级前,务必用目标版本验证能否
restore + recover成功
加密备份 ≠ 数据落盘加密,二者作用域完全不同
SET ENCRYPTION IDENTIFIED BY 只加密 RMAN 生成的备份集(.bkp 文件),对源数据文件、归档日志、控制文件副本等无影响;而 TDE 是对 .dbf 文件的实时加解密,两者完全正交。
- TDE 开启后,
backup database仍生成明文备份集,除非额外配置 RMAN 加密 - 不要把加密备份当“通用归档格式”——它强绑定 wallet 状态、密码、Oracle 主版本号三者
- 如需长期归档,建议先解密还原到临时库,再用非加密方式备份(如
tar -czf+ 外部 GPG 加密)
最容易被忽略的点是:wallet 关闭时 configure encryption for database on 仍静默允许 backup 执行,但结果是明文备份集。这种“看似配好了,其实没保护”的状态,在巡检中几乎无法自动发现,只能靠定期抽样验证备份集是否真能被 set decryption 解密。











