## Alert 로그
- 오라클 서버 내부/외부로부터 에러가 발생하면 제일 처음 분석해야 할 파일이 Alert 로그 파일을 포함하는 Trace 파일
- $ADR_HOME/trace 디렉토리에는 텍스트 파일 버전 : alert_[SID].log
- $ADR_HOME/alert 디렉토리에는 xml 파일 버전 : log.xml (DB에서 쿼리로 읽을때 xml을 읽음)
- SQL 문을 사용하여도 확인 가능
## Alert 로그 파일에 기록되는 주요 정보
- 데이터베이스 시작 및 종료 과정 관련 정보
- 컨트롤 파일 변경 관련 정보
- 오라클 내부 에러 관련 정보
- 로그 스위치 관련 정보
- 체크포인트 관련 정보
- 파라미터 관련 정보
방법1. trace 와 alert 로그 파일에 direct로 접속해서 확인
※ ADR : 오라클 서버가 생성하는 모든 트레이스 파일이 저장되는 위치
※ ADR_BASE 위치
show parameter diagnostic_dest
ADR위치
select name, value from v$diag_info;
위 명령어로도 위치를 확인할 수 있다.
# Alert 로그 파일 확인 방법
putty로 터미널을 두개 띄운다.
터미널1
cd /oracle/app/oracle/diag/rdbms/데이터베이스이름/인스턴스이름/trace
tail -f alert_인스턴스이름.log
tail 은 대부분 작업이 있거나 shutdown 하거나 startup할때만 봄
터미널2
shutdown immediate;
콘솔1은 tail -f 로 실시간으로 확인하고,
콘솔2에서는 sqlplus로 접속하여 shutdown 을 실행해본다.
shutdown
에러발생
바로바로 기록되는걸 확인할 수 있다.
방법2. SQL문으로 alert 로그 확인
딕셔너리 뷰로 어떤 컬럼들이 있는지 알 수 있다.
- 여기서 중요하게 봐야할 부분은 originating_timestamp(로그발생시간), message_text(로그메시지)이다.
desc x$dbgalertext
1시간 이내의 alert 로그를 확인
SELECT ORIGINATING_TIMESTAMP, MESSAGE_TEXT
FROM X$DBGALERTEXT
WHERE ORIGINATING_TIMESTAMP >= SYSDATE - 1/24;
하루 동안의 alert 로그 확인
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) - 24
ORDER BY RECORD_ID;
방법2. ADRCI를 활용하여 alert 로그 확인
adrci> show alert -tail -f -> 실시간 검색
adrci> show alert -tail 10 -> 뒤에서 10줄만 검색
adrci> show incident -p problem_key='ORA 0600' -> 특정 에러 번호 검색
- Bug 이슈에 대해 많이 발생하는게 ORA 600으로 표현됌
## 특정시간대 incident에 대한 trace 압축 파일 생성
ips pack time '2023-04-13 10:00:00.00' to '2023-04-13 13:00:00.00' in /tmp
화면처럼 원하는 디렉토리에 trace파일에 대한 zip파일이 만들어진걸 볼 수 있다.
## 10초이내에 발생한 incident에 대한 trace 압축 파일 생성
ips pack seconds 10
실제 압축파일 풀어서 열어보면 trace, alert 로그 파일이 들어있는걸 확인할 수 있다.
## 백그라운드 트레이스 파일
- 백그라운드 프로세스들에 의해 발생되는 로그 메시지들이 저장되는 파일
- alert로그 파일과 같은 위치에 저장 ( $ADR_HOME/trace )
## 사용자 트레이스 파일
- 사용자 프로세스들이 발생시키는 트레이스 파일
- 사용자 프로세스가 트레이스 파일을 활성화 시킬때 생성 ( $ADR_HOME/trace )
- Alter session 권한이 있어야 SQL 트레이스 활성화 가능
- Alter system으로 하면 엄청난 부하가 걸린다. 이런부분 조심해야한다!!!!!!!
alter session set sql_trace=true; -> 기록 on
alter session set sql_trace=false; -> 기록 off
확인하고자 하는 사용자의 프로세스 아이디 확인
SELECT S.USERNAME, P.SPID
FROM V$PROCESS P, V$SESSION S
WHERE P.ADDR = S.PADDR
AND S.USERNAME = 'C##DAMIN';
$ADR_HOME/trace 경로로 가면 trm과 trc파일을 확인할 수 있다.
Tkprof명령으로 포맷 변환을 시켜준 후 내용 확인
tkprof orcl_.trc c##damin_trace.txt
'Oracle > Admin' 카테고리의 다른 글
[Oracle] 병렬 처리 (1) | 2024.12.27 |
---|---|
[Oracle] User Call vs Recursive Call (0) | 2024.12.17 |
[Oracle] Index coalesce vs Index rebuild (0) | 2024.11.20 |
[Oracle] ORA-01804 : this index object is being online .. (2) | 2024.11.20 |
[ORACLE] RMAN BAKCUP (0) | 2024.11.15 |