ADVISE FAILURE 在 Oracle 19c 及之后版本中已被移除,执行报错 RMAN-00571,因 Data Recovery Advisor 功能链被整体废弃,无替代命令,需改用 VALIDATE、手动诊断及显式恢复流程。
Oracle 19c 中 ADVISE FAILURE 已不可用
直接说结论:advise failure 在 oracle 19c 及之后版本中已被移除,执行会报错 rman-00571: ... command is deprecated。这不是权限或环境配置问题,而是 oracle 主动废弃了整个 data recovery advisor(dra)功能链,包括 list failure、advise failure、repair failure 和 change failure。数据库管理员将完全无法调用这些命令。
为什么 19c 后不再支持 ADVISE FAILURE
Oracle 官方明确说明:DRA 的设计依赖于旧式自动诊断信息库(ADR)中的故障快照机制,与 19c 引入的统一诊断架构(Unified Diagnostic Architecture)和实时健康检查框架存在底层冲突。更关键的是,DRA 无法适配多租户(CDB/PDB)场景下的细粒度故障隔离,且其“自动合并修复”逻辑在 RAC 环境中易引发通道竞争和状态不一致。
- 没有替代命令——Oracle 未提供功能对等的新 RMAN 子命令
- 没有迁移路径——现有脚本中出现
ADVISE FAILURE必须重写 - 错误不会静默忽略——RMAN 解析时直接拒绝执行,不进入交互流程
替代方案:用 VALIDATE + 手动诊断组合代替
虽然不能自动出建议,但你可以用更可控的方式定位和修复常见故障:
- 用
VALIDATE DATABASE或VALIDATE DATAFILE <file></file>触发块级校验,失败信息会写入V$DATABASE_BLOCK_CORRUPTION和 ADR trace 文件 - 查询
V$IR_FAILURE(如果实例仍保留该视图,仅限 19c 早期补丁集)或直接解析adrci输出:adrci> show failure—— 注意这仅显示元数据,不生成修复语句 - 对控制文件丢失类故障,改用
RESTORE CONTROLFILE FROM AUTOBACKUP+RECOVER DATABASE显式流程 - 对数据文件缺失,跳过 DRA 建议,直接走
RESTORE DATAFILE <n></n>→RECOVER DATAFILE <n></n>→ALTER DATABASE DATAFILE <n> ONLINE</n>
所有操作必须基于有效备份和归档日志可用;ADVISE FAILURE 曾隐式检查这些依赖,现在需你手动确认 LIST BACKUP OF DATABASE 和 LIST ARCHIVELOG ALL 输出。
最容易被忽略的一点
即使你在 19c 数据库上连接的是 18c 的 RMAN 客户端(比如用旧版 $ORACLE_HOME/bin/rman),ADVISE FAILURE 依然会失败——服务端版本决定命令可用性,客户端降级无意义。唯一能“看到类似输出”的方式是启用 SQL 跟踪后人工解析 DBMS_HM.RUN_CHECK 的健康检查报告,但这不生成可执行的 RMAN 脚本,也不等价于当年的自动修复能力。


















