ORACLE 11G 告警日志查询视图v$diag_alert_ext显示多实例日志

为ORACLE11G 数据库监控做了一个告警日志查询的脚本:

select *
  from (WITH diag_alert_ext AS (SELECT ORIGINATING_TIMESTAMP,
                                       MESSAGE_TEXT,
                                       component_id,
                                       case
                                         when MESSAGE_TEXT LIKE '%Error%' OR
                                              MESSAGE_TEXT LIKE '%Fail%' OR
                                              MESSAGE_TEXT LIKE '%WARNING%' OR
                                              MESSAGE_TEXT LIKE '%Invalid%' OR
                                              MESSAGE_TEXT LIKE '%ORA-%' OR
                                              MESSAGE_TEXT LIKE
                                              '%Global Enqueue Services%' OR
                                              MESSAGE_TEXT LIKE '%dead%' then
                                          1
                                         else
                                          0
                                       end error_occured
                                  FROM v$diag_alert_ext
                                 WHERE ORIGINATING_TIMESTAMP >
                                       SYSTIMESTAMP - INTERVAL '1'
                                 DAY
                                   and component_id = 'rdbms')
         SELECT ORIGINATING_TIMESTAMP,
                
                MESSAGE_TEXT,
                lag(MESSAGE_TEXT, 3) over(order by ORIGINATING_TIMESTAMP desc),
                lag(MESSAGE_TEXT, 2) over(order by ORIGINATING_TIMESTAMP desc),
                lag(MESSAGE_TEXT, 1) over(order by ORIGINATING_TIMESTAMP desc),
                lead(MESSAGE_TEXT, 1) over(order by ORIGINATING_TIMESTAMP desc),
                lead(MESSAGE_TEXT, 2) over(order by ORIGINATING_TIMESTAMP desc),
                lead(MESSAGE_TEXT, 3) over(order by ORIGINATING_TIMESTAMP desc),
                component_id,
                error_occured
           FROM diag_alert_ext order by ORIGINATING_TIMESTAMP )
          where error_occured = 1

这个脚本可以查询Oracle alert log中一些报错信息,使用了窗口函数lag和lead,可以查看某条错误日志的,前3条信息和后3条信息。

在我对我的备库进行查询的时候发现了一个,奇怪的现象:我发现查出的日志不对,不是我连接到的数据库的日志。再仔细查看,原来查看的是另外一个实例的日志。

这里我交代一下背景,备库是两个生产库的备库,使用的是同一台机器,分别使用不同的实例。通过我进一步分析,发现 v$diag_alert_ext可以显示所有实例的相关日志。里面会记录日志文件名

那如果我要区分是什么数据库的日志呢,可以根据ADR_HOME字段,或者上面的Filename来区分

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值