Home 오라클 모니터링
Post
Cancel

오라클 모니터링

오라클 모니터링

현재 회사에서 하는 업무 중 하나는 DB 를 모니터링 하는 것이다.
모니터링이 필요한 경우는 다음과 같다.

  1. 장애 관제가 발생했을 때 오탐인지 장애인지 확인
  2. 작업 전후를 비교하여 원상태를 유지하는지 확인
  3. 작업 중 지연, lock, hang 발생하는지 확인

프로세스 모니터링

PMON, SMON, DBWR, LGWR 등 오라클에 필수적인 프로세스가 존재하는지 점검한다.
방법은 다음과 같다.

1
2
3
4
5
6
7
ps -ef | grep ORACLE | grpe $ORACLE_SID

## 출력 예시
UID     PID   PPID  C   STIME  TTY  TIME        CMD
oracle  1500    1   0   10:00   ?   00:00:05    ora_pmon_$ORACLE_SID
oracle  1501    1   0   10:00   ?   00:00:04    ora_smon_$ORACLE_SID
(이하 생략)

필수적으로 존재해야 하는 프로세스들이 모두 있으면 정상이다.

UPTIME 확인

작업 전후 혹은 서비스 장애 발생시 DB 점검을 할 때 반드시 해야한다.

1
2
3
4
5
6
7
8
9
10
11
12
select 
a.instance_name, b.open_mode,
to_char(a.startup_time, 'yyyy-mm-dd hh24:mi:ss') startup_time,
a.status
from v$instance a, v$database b;

## 출력 예시

INSTANCE_NAME				 OPEN_MODE				  STARTUP_TIME	      STATUS
---------------------------------------- ---------------------------------------- ------------------- ------------
XE					 READ WRITE				  2025-03-23 20:17:51 OPEN

세션 모니터링

액티브 세션 수가 많거나 Long run 세션이 많으면 시스템 부하가 발생하여 DB 성능이 저하된다.
만약 해당 경우가 발생하면 병목현상, Deadlock이 발생했는지 확인해야한다.
나는 야간에 근무하기 때문에, 많은 DB에서 배치 작업이 실행되는 시간대에 active 세션 수 경고나 롱 세션 경고를 자주 접한다.
그럴때마다 들어가서 병목현상이나 Blocking 현상이 발생했는지 확인한다.

로그 모니터링

오류가 발생하여 확인하거나 특정 작업이 정상적으로 수행되는 중인지 확인하기 위해 로그를 모니터링한다.
로그 경로는 버전마다 다르고, 회사마다 다를 수 있다.
기본적인 경로는 다음과 같다.
$ORACLE_BASE/diag/rdbms/DB_UNIQUE_NAME/ORACLE_SID/trace

만약 오라클11g 이상이라면 다음 쿼리를 사용해 경로를 찾을 수 있다.

1
2
3
4
5
6
7
select value from v$diag_info where name='Diag Trace';

##출력 예시

VALUE
------------
/opt/oracle/diag/rdbms/xe/XE/trace

경로를 찾았으면 들어가면 alert_$ORACLE_SID.log 파일이 있다.

1
2
3
4
tail -50f alert_$ORACLE_SID.log

## 필요에 따라서 커스텀하여 수행
grep "ORA-" alert_$ORACLE_SID.log

cat 이나 tail 등 편한 것을 이용해 내용을 확인한다.
주로 배치간에 자주 발생되는 에러들이 있고 스킵해도 되는 에러인지 확인한다.

This post is licensed under CC BY 4.0 by the author.

태그 중복 오류 해결

컴포넌트 스캔 및 Bean 충돌