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來區分

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章