새싹 DBA/Scripts

ALERT LOG 모니터링 뷰 (최종)

LIMMI 2024. 12. 16. 11:21

현 시점 기준 31일 전까지 유의미한 ALERT LOG 조회

WITH VW_MSG_TYPE AS ( 
                      SELECT 1 MESSAGE_TYPE , 'UNKNOWN' TYPE_NAME FROM DUAL
                       UNION ALL
                      SELECT 2 MESSAGE_TYPE , 'INCIDDENT_ERROR' TYPE_NAME FROM DUAL
                       UNION ALL
                      SELECT 3 MESSAGE_TYPE , 'ERROR' TYPE_NAME FROM DUAL
                       UNION ALL
                      SELECT 4 MESSAGE_TYPE , 'WARNING' TYPE_NAME FROM DUAL
                       UNION ALL
                      SELECT 5 MESSAGE_TYPE , 'NOTIFICATION(정상적 알림)' TYPE_NAME FROM DUAL
                       UNION ALL
                      SELECT 6 MESSAGE_TYPE , 'TRACE' TYPE_NAME FROM DUAL
                      )
    , VW_MSG_LEVEL AS (
                      SELECT 1 MESSAGE_LEVEL , 'CRITICAL (긴급)' LEVEL_NAME FROM DUAL
                       UNION ALL
                      SELECT 2 MESSAGE_LEVEL , 'SEVERE (심각)' LEVEL_NAME FROM DUAL
                       UNION ALL
                      SELECT 3 MESSAGE_LEVEL , 'IMPORTANT (중요)' LEVEL_NAME FROM DUAL
                       UNION ALL
                      SELECT 16 MESSAGE_LEVEL, 'NORMAL' LEVEL_NAME FROM DUAL
                      )
SELECT 'PIGWDB' AS DB_NAME -- DB명
     , TO_CHAR(ORIGINATING_TIMESTAMP,'YYYYMMDD HH24:MI:SS') AS ORIG_TIMESTAMP
     , A.MESSAGE_TYPE
     , B.TYPE_NAME
     , A.MESSAGE_LEVEL
     , C.LEVEL_NAME
     , A.PROBLEM_KEY
     , A.MESSAGE_TEXT
  FROM V$DIAG_ALERT_EXT A 
     , VW_MSG_TYPE B
     , VW_MSG_LEVEL C
 WHERE A.MESSAGE_TYPE = B.MESSAGE_TYPE (+)
   AND A.MESSAGE_LEVEL = C.MESSAGE_LEVEL(+)
   AND C.MESSAGE_LEVEL IN (1,2,3) -- NORMAL 빼고
   AND A.ORIGINATING_TIMESTAMP >= SYSDATE - 31
 ORDER BY ORIGINATING_TIMESTAMP DESC;