본문 바로가기
Database/Oracle

[ORACLE] DBMS_ALERT_INFO 완전 분석 : 실시간 알림 시스템과 통지 아키텍처

by Papa Martino V 2025. 7. 31.
728x90

DBMS_ALERT_INFO 완전 분석 : 실시간 알림 시스템과 통지 아키텍처
[ORACLE] DBMS_ALERT_INFO

 

1. DBMS_ALERT과 DBMS_ALERT_INFO란?

Oracle에서 제공하는 DBMS_ALERT 패키지는 세션 간 메시지를 교환하면서 비동기적인 알림 기능을 수행합니다. DBMS_ALERT_INFO는 이와 연계되어 alert 설정과 상태를 확인할 수 있는 실무용 뷰 및 헬퍼 프로시저 모음입니다. 특히 여러 세션이 대기(wait) 상태에서 특정 event name에 대해 알림을 받고 처리할 수 있어, OLTP나 알림 기반 처리 구조에 유용합니다.

2. 주요 기능 및 특장점 요약

기능 설명
비동기 알림 세션 간 publish/subscribe 방식으로 이벤트 전달
세션 모니터링 대기중인 세션 수와 응답 지연 시간 조회 가능
간단한 인터페이스 PL/SQL 내에서 직접 호출 가능

3. DBMS_ALERT 관련 객체 요약 비교

구분 DBMS_ALERT DBMS_ALERT_INFO 뷰/패키지
역할 메시지 설정 및 알림 처리 상태 모니터링 및 알림 정보 제공
주요 객체 SIGNAL, WAITONE, WAITANY INFO 뷰, 헬퍼 함수
사용 위치 애플리케이션 로직 내 DBA / 모니터링 툴

4. DBMS_ALERT_INFO 조회 및 활용 예시

다음은 alert 패키지와 정보를 조회하는 기본 예시입니다:

-- ALERT 대기 세션 개수 모니터링
SELECT count(*) AS waiting_sessions
FROM dba_alert_info
WHERE alert_name = 'MY_EVENT';

-- 가장 오래 대기 중인 세션 정보 확인
SELECT session_id, wait_time_sec
FROM dba_alert_info
WHERE alert_name = 'MY_EVENT'
ORDER BY wait_time_sec DESC;

5. 실무 활용 시나리오

  • 실시간 알림 기반 처리: 데이터 입력 후 자동 처리 트리거 없이 통지형 로직 실행
  • 성능 지연 감지: 특정 이벤트에 대기 중인 세션 누적 시 경고 메시지 전송
  • 연동 시스템 알림: 메시징 큐 또는 외부 서비스와 연계하여 알림 처리
  • 장애 대응 및 모니터링: DBA가 alert 상태를 실시간으로 조회하여 문제 상황 빠르게 대응

6. 사용 시 주의사항 및 한계

  • DBMS_ALERT은 동일 DB 인스턴스 내에서만 동작하며, RAC와 분산 시스템에서는 제한적일 수 있음
  • 대기 세션이 많아지면 시스템 리소스를 과도하게 사용 가능
  • Alert 이름과 payload 크기 제한 존재 (최대 2000 byte)
  • 보안 설정에서 remote PL/SQL 실행이 제한된 경우 동작하지 않을 수 있음

7. 고급 활용 전략

  • DBMS_ALERT_INFO 기반 대시보드 구성: 웹 또는 콘솔 UI에서 대기 상태 및 응답 시간을 시각화
  • 자동 cleanup 스크립트: 오래된 alert 정보 삭제 및 대기 세션 정리
  • 혼합 시스템 통합: 애플리케이션 메시지 큐 또는 MQ 서비스와 연결 활용
BEGIN
  FOR rec IN (
    SELECT session_id
    FROM dba_alert_info
    WHERE wait_time_sec > 60
  ) LOOP
    DBMS_ALERT.SIGNAL('ALERT_CLEANUP', rec.session_id);
  END LOOP;
END;

8. 요약 비교 표

항목 DBMS_ALERT DBMS_ALERT_INFO 뷰
주요 목적 이벤트 발송 및 대기 대기 상태 모니터링
클라이언트 대상 PL/SQL 세션 DBA 및 관리 툴
데이터 제공 알림 내용 및 payload 대기 세션, 대기 시간 정보

출처

  • Oracle Database PL/SQL Packages and Types Reference 21c – Oracle Corporation
  • Oracle Alert Programming with DBMS_ALERT – Oracle Docs
728x90