728x90

SQL 툴에서 SYS계정의 SYSDBA로 접속해야 한다.

SELECT * 
FROM SYS.X$DBGALERTEXT;

Alert log의 내용 결과를 나타내 주는 테이블이다.

Alert Log 확인

SELECT 
    HOST_ID, 
    HOST_ADDRESS,
    TO_CHAR(ORIGINATING_TIMESTAMP, 'YY/MM/DD(DY) HH24:MI:SS') AS "ALTERT_DATE",
    MESSAGE_TEXT
FROM  SYS.X$DBGALERTEXT
WHERE ORIGINATING_TIMESTAMP >= TRUNC(SYSDATE) -7
ORDER BY RECORD_ID;

날짜 포맷을 연월일 요일 시분초로 변경한 쿼리문이다. TRUNC는 어떤 식으로 사용돼 나면 아래와 같은 쿼리로 많이 사용한다.

-- 시간 확인
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';

SELECT SYSDATE FROM DUAL
UNION ALL
SELECT SYSDATE -1 FROM DUAL
UNION ALL
SELECT TRUNC(SYSDATE) -1 FROM DUAL;

WHERE ORIGINATING_TIMESTAMP >= TRUNC(SYSDATE)은 오늘 00시부터 모든 Alert log가 다 나오게 된다.

SELECT 
    '<html><font color=orange><b>'||HOST_ID||'</font></html>' AS "HOST_ID",
    '<html><bgcolor=blue><font color=white>'  ||HOST_ADDRESS  ||'</font></html>' AS "HOST_ADDRESS",
    '<html><bgcolor=yellow><font color=black>'||TO_CHAR(ORIGINATING_TIMESTAMP, 'YY/MM/DD(DY) HH24:MI:SS') AS "ALTERT_DATE",
    '<html><bgcolor=red><font color=white>'   || MESSAGE_TEXT ||'</font></html>' AS "ALTERLOG"
FROM  SYS.X$DBGALERTEXT
--WHERE ORIGINATING_TIMESTAMP >= SYSDATE  - INTERVAL '10' MINUTE
--WHERE ORIGINATING_TIMESTAMP >= SYSDATE  - INTERVAL '30' MINUTE
--WHERE ORIGINATING_TIMESTAMP >= SYSDATE  - INTERVAL '1' HOUR
WHERE ORIGINATING_TIMESTAMP >= TRUNC(SYSDATE) -20
AND   MESSAGE_TEXT LIKE '%ORA-%'
ORDER BY RECORD_ID;

SQL 디벨로퍼에서는 html code를 작성하면 안에 있는 데이터에 대한 색상을 표현할 수 있다.

Alert log 관리 꿀팁

adrci(Automatic Diagnostic Repository)로 디비 진단할 때 많이 사용하는 명령어이다.

adrci

오라클 계정에서 adrci를 입력한다.

adrci 설정 확인

show homes

Diagnostic 위치가 나온다.

adrci Home Path 변경

set HOMEPATH diag/rdbms/str/STR
-- Alert Log 삭제(분) (30*24*60) 30일 
purge -age 43200 -type ALERT

-- Alert Log 삭제(분) (60*24*60) 60일  
purge -age 86400 -type ALERT

-- Alert Log 삭제(분) (90*24*60) 90일 
purge -age 129600 -type ALERT

원하는 보관 주기에 맞춰서 사용하면 된다. 이렇게 해야 X$DBGALERTEXT fixed 테이블에 데이터를 줄일 수 있는 꿀팁이다.

참고

https://www.youtube.com/watch?v=q5J9Z5fKeFE 

 

728x90

+ Recent posts