본문 바로가기
Database/Oracle

[ORACLE] ALL_JOBS 완전 해설 및 실무 활용 가이드

by Papa Martino V 2025. 10. 12.
728x90

ALL_JOBS
[ORACLE] ALL_JOBS

1. 개요

ALL_JOBS 뷰는 Oracle Database에서 DBMS_JOB 패키지를 통해 등록된 비동기 작업(Job)의 메타데이터를 조회하기 위한 핵심 데이터 딕셔너리 뷰입니다. 이 뷰는 사용자가 직접 소유한 Job뿐 아니라, 접근 권한이 부여된 스키마의 Job까지 확인할 수 있도록 설계되어 있습니다. 스케줄링된 백그라운드 작업을 관리하거나, 자동화된 프로세스를 점검하는 데 필수적으로 활용됩니다.

2. 기본 구조

ALL_JOBS는 다음과 같은 주요 컬럼을 포함합니다. 이 컬럼들을 이해하면 스케줄러 기반 배치 관리의 핵심 로직을 완벽하게 파악할 수 있습니다.

컬럼명 데이터 타입 설명
JOB NUMBER 작업의 고유 식별 번호
LOG_USER VARCHAR2 작업을 등록한 사용자 계정
PRIV_USER VARCHAR2 권한을 통해 실행되는 사용자
SCHEMA_USER VARCHAR2 실행 시의 스키마 사용자
LAST_DATE DATE 마지막 실행 시각
THIS_DATE DATE 현재 실행 중인 경우 실행 시작 시각
NEXT_DATE DATE 다음 실행 예정 시각
TOTAL_TIME NUMBER 작업이 실행된 누적 시간(초)
BROKEN VARCHAR2 ‘Y’일 경우 작업이 중단된 상태
INTERVAL VARCHAR2 다음 실행 주기(예: SYSDATE+1/24)
FAILURES NUMBER 연속 실패 횟수
WHAT VARCHAR2 실행되는 PL/SQL 코드 본문

3. 주요 특징

  • DBMS_JOB 패키지로 생성된 작업의 실행 주기와 상태를 한눈에 파악할 수 있습니다.
  • 관리자는 실패 횟수(FAILURES)와 중단 여부(BROKEN)를 통해 자동화 오류를 신속히 탐지할 수 있습니다.
  • INTERVAL 컬럼을 분석하면 업무 스케줄의 주기를 효율적으로 조정할 수 있습니다.

4. 관련 뷰와 비교

Oracle 10g 이후에는 DBMS_SCHEDULER 기반의 ALL_SCHEDULER_JOBS 뷰가 등장했습니다. 기존 ALL_JOBS는 구버전 호환성 유지를 위해 남아 있으며, 현재도 내부적으로 경량 자동화 로직이나 레거시 배치 시스템에서 활발히 사용됩니다.

항목 ALL_JOBS ALL_SCHEDULER_JOBS
도입 버전 Oracle 7 Oracle 10g 이상
관리 방식 DBMS_JOB DBMS_SCHEDULER
주기 설정 INTERVAL 식 CALENDAR EXPRESSION
보안/권한 구조 단순 사용자 기반 ROLE 기반, 세분화된 권한
권장 여부 레거시 시스템용 신규 시스템용

5. 사용 예시

-- 1) 현재 계정에서 등록된 JOB 목록 조회
SELECT job, log_user, next_date, interval, what
FROM all_jobs
WHERE log_user = USER;

-- 2) 특정 Job의 실행 주기 변경
BEGIN
  DBMS_JOB.INTERVAL(job => 42, interval => 'SYSDATE + 1/24');
  COMMIT;
END;

-- 3) Job 비활성화
BEGIN
  DBMS_JOB.BROKEN(job => 42, broken => TRUE);
  COMMIT;
END;

6. 관리 전략

운영 환경에서 Job이 많아질수록 다음 세 가지 관리 포인트가 중요합니다:

  1. 실패 감지 자동화 – FAILURES가 일정 횟수를 넘으면 알림을 발송하도록 모니터링 구성
  2. INTERVAL 최적화 – 리소스 부하에 따라 SYSDATE+1/24 같은 주기를 유연하게 조정
  3. BROKEN 상태 점검 – 오래된 Job 중 중단된 Job을 주기적으로 점검 및 정리

7. 성능 및 트러블슈팅

실무에서 자주 발생하는 문제는 Job이 실행되지 않거나 반복 실패하는 현상입니다. 이 경우 다음 항목을 점검해야 합니다.

문제 유형 원인 대응 방안
Job이 실행되지 않음 JOB_QUEUE_PROCESSES 파라미터가 0으로 설정 ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10;
JOB 실패 반복 PL/SQL 오류, 권한 부족, 객체 손상 DBA_JOBS_RUNNING 및 ALERT 로그 점검
실행 지연 리소스 경합 또는 시스템 부하 스케줄 시간대 분산 및 INTERVAL 조정

8. 실무 활용 시나리오

  • 매일 오전 6시에 데이터 백업 자동 실행
  • 매시간 로그 테이블 정리 및 통계 수집
  • 비즈니스 이벤트 발생 시 자동 메일 전송
  • 월별 리포트 생성 및 외부 파일 업로드

이러한 업무는 ALL_JOBSDBMS_JOB을 이용하면 손쉽게 자동화할 수 있습니다. 최근에는 DBMS_SCHEDULER로의 전환이 일반적이지만, ALL_JOBS는 여전히 간결하고 빠른 배치 시스템을 구축하는 데 유효한 솔루션입니다.

9. 보안 및 감사

ALL_JOBS의 LOG_USERPRIV_USER 컬럼은 Job 실행 시 권한 위임 및 감사 로그 추적을 위해 필수적입니다. 감사(AUDIT) 설정을 병행하면 Job을 통한 비인가 접근을 방지할 수 있습니다.

10. 결론

ALL_JOBS는 Oracle의 자동화 생태계에서 가장 기본적이면서도 실용적인 관리 도구입니다. 단순 반복 작업을 손쉽게 처리하고, Job의 상태를 세밀히 제어할 수 있기 때문에 운영 효율성을 극대화하고 장애 대응 시간을 단축시키는 역할을 수행합니다.

11. 참고 출처

  • Oracle Database 19c Administrator’s Guide – Chapter 28. Managing Job Queues
  • Oracle DBMS_JOB Package Reference (Doc ID: 207221.1)
  • Oracle 23ai Official Documentation – Data Dictionary Views
728x90