본문 바로가기
IT/AWR-ASH

ASH를 활용한 자동 성능 경고 설정: 성능 저하 발생 시 자동 경고를 설정하는 방법.

by free-inf 2025. 3. 6.

서버 이관 프로젝트를 진행하는 과정에서 이전 환경과 새로운 환경의 데이터베이스 성능 차이를 지속적으로 모니터링하는 것은 매우 중요한 작업이다. 예상치 못한 병목 현상이나 SQL 실행 지연이 발생하면 서비스 품질이 저하되고, 운영 중 장애로 이어질 가능성이 높다.

 

이러한 문제를 예방하려면 성능 저하가 발생할 조짐이 보일 때 미리 감지하고 대응하는 것이 중요하다. 이를 위해 Oracle에서는 ASH(Active Session History) 데이터를 활용한 성능 모니터링과 자동 경고(Alerts) 기능을 제공한다.

  • ASH 데이터데이터베이스의 활성 세션을 초 단위로 기록하여, SQL 실행 패턴, 대기 이벤트(WAIT EVENT), CPU 및 I/O 사용량을 실시간으로 분석할 수 있는 기능이다.
  • 자동 성능 경고 기능을 활용하면 특정 임계치(threshold)를 초과하는 경우, 자동으로 경고를 생성하고 대응 조치를 수행할 수 있다.

본 글에서는 ASH 데이터를 활용하여 자동 성능 경고를 설정하는 방법과, 이를 통해 데이터베이스 성능을 사전에 모니터링하고 문제를 예방하는 전략을 상세히 설명한다. 이를 통해 서버 이관 후 발생할 수 있는 성능 저하 문제를 효과적으로 감지하고 대응할 수 있도록 한다.


자동 성능 경고 설정이 필요한 이유

1. 성능 저하 감지 및 조기 대응

  • SQL 실행 시간이 비정상적으로 길어지거나, CPU 사용률이 급격히 증가하는 경우 이를 즉시 감지하고 대응할 수 있다.
  • 사전에 설정된 임계치를 초과하면 경고를 자동으로 생성하여 실시간 대응을 가능하게 한다.

2. 예측 가능한 성능 관리

  • 과거 성능 데이터를 기반으로 일정 패턴이 반복되는 경우, 특정 시간대나 이벤트 발생 시점을 예측할 수 있다.
  • 예측된 패턴을 기준으로 자동 경고를 설정하면, 성능 저하를 미리 감지하고 최적화할 수 있다.

3. 장애 예방 및 가용성 확보

  • I/O 대기, CPU 과부하, 블로킹 세션 등의 문제가 발생하기 전에 경고를 설정하면, 장애로 이어지는 것을 방지할 수 있다.
  • 운영 환경에서 시스템 가용성을 유지하고, SLA(Service Level Agreement)를 준수하는 데 도움이 된다.

ASH 데이터를 활용한 자동 성능 경고 설정 방법

1. 실행 시간이 긴 SQL 자동 감지 및 경고 설정

실행 시간이 일정 기준을 초과하는 SQL을 감지하고 경고를 설정하려면 ASH 데이터를 활용하여 실행 시간이 긴 SQL을 조회한 후, 임계치를 설정해야 한다.

1) 실행 시간이 긴 SQL 조회

아래 SQL을 실행하면 최근 30분 동안 실행된 SQL 중 평균 실행 시간이 가장 긴 SQL을 확인할 수 있다.

  • AVG(elapsed_time) > 5000000 → 실행 시간이 5초를 초과하는 SQL을 감지.
  • execution_count → 실행 횟수를 기반으로 자주 실행되는 SQL 분석.

2) 경고 설정

Oracle에서는 DBMS_SERVER_ALERT 패키지를 사용하여 특정 임계치를 초과하면 자동으로 경고를 생성할 수 있다.

  • warning_value = 5000000 → SQL 실행 시간이 5초를 초과하면 경고 발생.
  • critical_value = 10000000 → SQL 실행 시간이 10초를 초과하면 심각 경고 발생.

이 설정을 통해 SQL 실행 시간이 길어질 경우 즉시 경고가 발생하도록 구성할 수 있다.


2. CPU 사용량이 높은 SQL 자동 감지 및 경고 설정

CPU 사용량이 급격히 증가하면 데이터베이스 성능이 저하될 수 있으므로, 특정 임계치를 초과할 경우 경고를 생성하는 것이 필요하다.

1) CPU 사용량이 높은 SQL 조회

  • COUNT(*) > 100 → CPU에서 100회 이상 실행된 SQL을 감지.

2) CPU 사용량 초과 시 경고 설정

  • warning_value = 80 → CPU 사용량이 80%를 초과하면 경고.
  • critical_value = 95 → CPU 사용량이 95%를 초과하면 심각 경고.

이 설정을 통해 CPU 사용률이 급격히 증가할 경우 즉시 경고를 받을 수 있다.


3. 블로킹 세션 자동 감지 및 경고 설정

블로킹 세션이 발생하면 데이터베이스 성능이 급격히 저하될 수 있으므로, 이를 감지하고 경고를 설정하는 것이 필요하다.

1) 블로킹 세션 조회

  • COUNT(*) > 5 → 블로킹이 5회 이상 발생한 세션을 감지.

2) 블로킹 세션 발생 시 경고 설정

  • warning_value = 5 → 블로킹 세션이 5개 이상 발생하면 경고.

이 설정을 통해 블로킹 세션이 발생하면 즉시 경고를 받아 대응할 수 있다.


ASH 데이터를 활용하면 SQL 실행 시간, CPU 사용량, 블로킹 세션 등의 성능 지표를 실시간으로 감지하고, 자동 경고를 설정하여 성능 저하를 사전에 방지할 수 있다.