Oracle 23ai 不支持传统手动搭建 Data Guard,因其为托管服务,不开放底层 OS、SQL*Plus 直连及 ALTER DATABASE 等命令,所有配置须通过 Azure/OCI 控制台调用 API 自动完成。

Oracle 23ai 中 Data Guard 不能“快速启用”——它必须通过 Exadata Infrastructure 部署,且依赖 Azure(或 OCI)云平台的托管能力,本地或非 Exadata 环境无法直接配置。
为什么 Oracle 23ai 不支持传统手动搭建 Data Guard
Oracle AI Database 23ai 是专为 AI 工作负载优化的托管数据库服务,运行在 Oracle Exadata Database Service on Exascale Infrastructure(即 E 级 VM 集群)之上。它不暴露底层 OS、$ORACLE_HOME 或 SQL*Plus 直连权限,ALTER DATABASE ADD STANDBY LOGFILE、CREATE STANDBY CONTROLFILE 等传统命令不可执行。
所有 Data Guard 配置均由云平台控制台驱动,底层由 Oracle 代理自动完成网络打通、密码文件同步、SRL 创建、Broker 初始化等操作。
- 你无法 SSH 登录主库节点执行
STARTUP MOUNT或修改log_archive_dest_n -
DBMS_WORKLOAD_REPOSITORY.CREATE_REMOTE_SNAPSHOT只能在已建立的 ADG 备库上运行,不是启用前提 - 观察程序(Observer)必须部署在独立 VM 上,且需手动配置监听和 TNS 连接,不是一键开启
真正可行的启用路径:仅限 Azure 或 OCI 控制台操作
在 Oracle AI Database@Azure 中启用 Data Guard,本质是调用云平台 API 创建 Data Guard Group 资源,而非 DBA 手动执行 SQL。
- 主库必须已部署在 E 级 VM 集群中,且
db_unique_name已由平台自动设定(如orcl23ai_primary) - 备用库只能部署在同一区域的不同可用性区域(AZ),或跨区域——但跨区域需额外开通对等网络并满足 RPO 要求
- 必须预配一个轻量级 Linux VM 作为 Observer,安装 Oracle Client,并确保能同时连通主库和备库的 SCAN VIP 和端口 1521
- 在 Azure 控制台中选择主库 → “Data Guard 关联” → “添加备用数据库” → 选择 “Active Data Guard” 类型 → 指定备用集群位置 → 启用 “Fast Start Failover” 开关
整个流程耗时约 15–40 分钟,取决于网络延迟与存储初始化速度;失败常见于:NET_TIMEOUT 设置过短、Observer 连接超时、备用集群 CIDR 与主集群重叠。
FSFO 观察程序配置最容易出错的三个点
即使控制台显示 Data Guard Group “ACTIVE”,若 Observer 未正确运行,FastStartFailover 实际不会触发故障转移。
- Observer 必须使用
dgmgrl连接到 Broker 监听地址(非数据库监听),典型命令:dgmgrl sys/<password>@<broker_host>:1521/DGBROKER</broker_host></password>
- Observer 启动后需显式执行:
START OBSERVER;它不会随系统启动自动拉起,也无 systemd unit 文件 - Observer 日志默认写入
$ORACLE_HOME/dbs/observer.log,但 23ai 托管环境不开放该路径——日志实际输出到云平台诊断日志流,需在 Azure Monitor 中过滤dg_observer关键字
启用后必须验证的两个关键状态
控制台界面只显示“Active”,不代表 FSFO 就绪。必须登录主库确认 Broker 状态:
SELECT FS_FAILOVER_STATUS, FS_FAILOVER_CURRENT_TARGET, FS_FAILOVER_THRESHOLD FROM V$DATABASE;
正常值应为:FS_FAILOVER_STATUS = 'SYNCHRONIZED',FS_FAILOVER_CURRENT_TARGET 指向备用库名,FS_FAILOVER_THRESHOLD 应大于 30(单位秒)。
若返回 'DISABLED' 或 'SESSIONS_ACTIVE',说明 Observer 未连接成功,或主备间心跳中断——此时手动 FAILOVER TO 仍可执行,但自动切换不会发生。
最常被忽略的是 Observer 的存活检查机制:它每 5 秒向主库发一次 SELECT 1 FROM DUAL,一旦连续 3 次失败就触发 FSFO 判定。这个逻辑无法关闭或调整,也不记录在任何 SQL 视图中。











