需先在OEM中注册主备库两个oracle_database目标并确保状态为Up,再配置代理采集V$DATAGUARD_STATS等视图数据,13c+版本才支持图形化视图,告警需配置发件人、调低采样周期并验证SQL视图数据一致性。
怎么在OEM云控制台里看到Data Guard实时状态
oem云控制台本身不直接展示data guard的“主库-备库”拓扑图或同步延迟毫秒级数值,它依赖底层代理采集的dba_logstdby_progress、v$dataguard_stats等视图数据。你得先确认oem已发现并注册了主库和备库两个目标数据库(且状态为up),否则后续所有监控都无从谈起。
常见错误是只添加了主库,忘了把备库也作为独立数据库目标加入OEM管理——这时你在“Data Guard”相关菜单里会看到空白或报No Data Guard configuration found。检查路径:云控制台 > 目标 > 数据库 > 确认两个实例都存在且Target Type为oracle_database,Availability为绿色。
启用Data Guard图形化视图的关键前提
OEM的Data Guard图形化界面(含主备切换按钮、日志传输/应用延迟热力图)不是默认开启的,它要求主库和备库都已部署并配置好OEM代理(agent),且代理能成功执行emctl status agent并上报dataguard相关指标。
- 确保主库和备库的
ORACLE_HOME下$ORACLE_HOME/bin/emctl可被代理调用,否则图形视图显示“数据不可用” - 检查代理日志:
$AGENT_HOME/sysman/log/gcagent.log中是否出现Failed to collect DataGuard metrics类报错 - OEM 13c及以上版本才支持图形化视图;低于13.4的旧版本即使配置正确,也只显示文本表格
给Data Guard告警配邮件通知,绕不开发件人配置
OEM的告警邮件不是靠系统默认SMTP直发,必须先在OEM中定义一个合法的发件人(email sender),否则即使你创建了告警规则、绑定了邮箱,最终也会静默失败,日志里只写Notification delivery failed: no valid sender configured。
实操要点:
- 进入OEM云控制台 → 设置 → 系统 → 通知方法 → 邮件 → 添加发件人
-
SMTP服务器地址和端口必须与你企业邮箱策略一致:若用TLS加密,端口填587;若用SSL,填465;禁用加密则填25(但多数企业已禁用) - 用户名密码不是填在OEM页面,而是要通过命令行注入到OEM的凭证库:
emctl config oms -store_credential <credential_name><username><password></password></username></credential_name> - 告警规则本身要单独启用:目标数据库 → 监控设置 → 阈值 → 找到
Data Guard Status或Apply Lag指标 → 编辑阈值 → 勾选“发送通知”并指定刚建好的发件人
为什么Data Guard延迟告警总不触发
最常被忽略的是指标采集频率与告警检测周期不匹配。OEM默认每30分钟拉一次apply_lag(单位:秒),但你在告警规则里设了“连续2次超阈值就告警”,而实际延迟可能只在某次采样瞬间飙高又回落——结果就是告警永远不发。
解决办法:
- 把告警的“统计周期”设为
15分钟或5分钟(需确认代理负载允许) - 把“触发条件”的“连续发生次数”从
2改为1,避免漏报 - 别只盯
apply_lag,同步看transport_lag和db_unique_name是否一致——后者不一致说明OEM根本没识别出这是同一套DG配置
图形界面看着漂亮,但底层还是靠几个SQL视图撑着;一旦代理掉线或视图权限不足,所有图表立刻变灰。真出问题时,先登录数据库查SELECT * FROM V$DATAGUARD_STATS;,再回头比对OEM里显示的数值是否一致——这一步省不得。










