
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이 많아질수록 다음 세 가지 관리 포인트가 중요합니다:
- 실패 감지 자동화 – FAILURES가 일정 횟수를 넘으면 알림을 발송하도록 모니터링 구성
- INTERVAL 최적화 – 리소스 부하에 따라 SYSDATE+1/24 같은 주기를 유연하게 조정
- 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_JOBS와 DBMS_JOB을 이용하면 손쉽게 자동화할 수 있습니다. 최근에는 DBMS_SCHEDULER로의 전환이 일반적이지만, ALL_JOBS는 여전히 간결하고 빠른 배치 시스템을 구축하는 데 유효한 솔루션입니다.
9. 보안 및 감사
ALL_JOBS의 LOG_USER 및 PRIV_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
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_2PC_NEIGHBORS 완전 해설 및 분산 트랜잭션 관리 가이드 (0) | 2025.10.12 |
|---|---|
| [ORACLE] DBA_HISTOGRAMS 완전 해설 및 실무 활용 가이드 (0) | 2025.10.12 |
| [ORACLE] DICT 뷰 완전 정복 : 데이터 사전의 지도이자 개발자의 나침반 (0) | 2025.10.10 |
| [ORACLE] COLS 뷰 완전 가이드 : USER_TAB_COLUMNS의 초경량 별칭으로 컬럼 메타를 빠르게 읽는 법 (0) | 2025.10.10 |
| [ORACLE] CLU 뷰 완전 해설 : CLUSTERS 구조 파악의 핵심 포인트와 실무 활용 (0) | 2025.10.10 |