必须单独购买active data guard授权;v$option返回true仅表示二进制支持,真正启用需v$database.open_mode为“read only with apply”且v$managed_standby中mrp0状态为applying_log。

需要单独购买授权,Enterprise Edition 不自动包含 Active Data Guard 授权。
确认 V$OPTION 返回 TRUE 只代表二进制支持,不等于已获授权
执行 SELECT * FROM V$OPTION WHERE PARAMETER = 'Active Data Guard'; 返回 TRUE,仅说明当前 Oracle 12c 二进制中编译了 ADG 功能代码——这在 Enterprise Edition 中默认存在。但该结果与许可证状态无关,Standard Edition 则直接返回 FALSE,连代码都不含。
常见误判点:
- 看到
TRUE就认为“可以用了”,结果后续ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE启动 MRP 失败 - 把
V$LICENSE或DBA_REGISTRY中无 ADG 条目,当成配置遗漏而非授权缺失
真正启用 ADG 的两个硬性运行态指标
只有同时满足以下两点,才能确认授权已生效且功能可用:
-
V$DATABASE.OPEN_MODE稳定显示READ ONLY WITH APPLY(不是READ ONLY) -
V$MANAGED_STANDBY.PROCESS = 'MRP0'对应的STATUS为APPLYING_LOG,且SEQUENCE#持续推进
若只到 READ ONLY,或 MRP 进程启动即退出、报 ORA-00344 / ORA-00345,大概率是授权缺失;此时查 V$ARCHIVE_DEST_STATUS 通常显示 ERROR 或 INACTIVE,但根本原因不在网络或路径。
验证授权是否存在必须检查 DBA_REGISTRY 和许可证书
DBA_REGISTRY 是运行时最直接的证据:
运行 SELECT COMP_NAME, STATUS, VERSION FROM DBA_REGISTRY WHERE COMP_NAME LIKE '%Data Guard%';
正常授权状态下必须返回一行:COMP_NAME = 'ACTIVE DATA GUARD',且 STATUS = 'VALID'。若无此行,或状态为 INVALID / LOADING,说明未激活授权。
更权威的依据是 Oracle 官方签发的 License Certificate 文件,其中明确列出 Active Data Guard 条目及授权数量。不要依赖 adg.lic 文件是否存在——Oracle 并不强制部署该文件,部分客户环境甚至从未生成过它。
ADG 授权不是开关,也不是参数,没法靠改 init.ora 或重启实例“打开”。一旦发现备库卡在 READ ONLY、MRP 无法持续应用日志,优先排查授权,而不是反复调整归档路径或监听配置。











