본문 바로가기

Oracle/Admin

[Oracle] DBMS log 를 확인 하는 방법 정리

728x90

## 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

 

 

https://daminies.tistory.com/11

728x90
반응형

'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