Oracle 데이터베이스에서 정기적으로 실행되는 잡(Job)은 시스템 유지, 데이터 처리, 백업 등에 필수적입니다. 하지만 실제로 잡이 언제 실행되었는지실행 시간은 얼마나 걸렸는지, 또는 정상적으로 실행되었는지 확인하는 방법은 잘 알려져 있지 않습니다.


이 글에서는 Oracle에서 사용되는 DBMS_SCHEDULER와 DBMS_JOB 두 가지 방식의 잡 실행 시간을 확인하는 SQL 쿼리 방법을 단계별로 소개합니다. 실무에서 유용하게 쓰일 수 있도록 예제 포함실행 중인 잡 확인오류 잡 필터링 방법까지 정리했으니 끝까지 참고해 보세요!


✅ 1. DBMS_SCHEDULER 기반 잡 실행 시간 확인 (Oracle 10g 이상)

Oracle 10g 이상에서 기본으로 사용되는 스케줄러는 DBMS_SCHEDULER입니다. 실행 기록은 아래 뷰에서 확인할 수 있습니다


SELECT 
    JOB_NAME,
    STATUS,
    ACTUAL_START_DATE,
    RUN_DURATION,
    CPU_USED,
    ERROR#,
    ADDITIONAL_INFO
FROM 
    DBA_SCHEDULER_JOB_RUN_DETAILS
WHERE 
    JOB_NAME = 'YOUR_JOB_NAME'
ORDER BY ACTUAL_START_DATE DESC;



📌 주요 컬럼 설명

컬럼명설명
JOB_NAME잡 이름
ACTUAL_START_DATE실제 실행 시작 시각
RUN_DURATION실행에 걸린 시간 (HH24:MI:SS)
STATUSSUCCEEDED / FAILED / STOPPED 등
ERROR#에러 번호 (있을 경우)

⚠️ DBA 권한이 없으면 USER_SCHEDULER_JOB_RUN_DETAILS 또는 ALL_SCHEDULER_JOB_RUN_DETAILS를 사용하세요.


✅ 2. DBMS_JOB 기반 잡 실행 시간 확인 (구버전)

예전 Oracle 버전이나 레거시 시스템에서 사용되는 DBMS_JOB은 다음 뷰에서 확인할 수 있습니다

SELECT 
    JOB,
    LAST_DATE,
    THIS_DATE,
    NEXT_DATE,
    FAILURES,
    BROKEN
FROM 
    DBA_JOBS
WHERE 
    JOB = your_job_id;

📌 주요 컬럼 설명


컬렴명설명
LAST_DATE마지막 실행된 날짜
THIS_DATE현재 실행 중이면 해당 날짜 표시
NEXT_DATE다음 실행 예정 시간
FAILURES실패 횟수
BROKEN잡이 깨졌는지 여부 (Y/N)

✅ 3. 현재 실행 중인 잡 확인

SELECT 
    JOB_NAME, 
    SESSION_ID, 
    RUNNING_INSTANCE, 
    ELAPSED_TIME
FROM 
    DBA_SCHEDULER_RUNNING_JOBS;



이 쿼리를 통해 현재 실행 중인 스케줄러 잡의 상태와 경과 시간까지 실시간으로 확인할 수 있습니다.


🔎 팁: 평균 실행 시간 계산

실행 시간 차이를 기반으로 평균을 계산하고 싶다면 다음처럼 가공할 수 있습니다

SELECT 
    JOB_NAME,
    AVG(EXTRACT( HOUR FROM RUN_DURATION) * 60 + 
        EXTRACT( MINUTE FROM RUN_DURATION) + 
        EXTRACT( SECOND FROM RUN_DURATION) / 60) AS AVG_MINUTES
FROM 
    DBA_SCHEDULER_JOB_RUN_DETAILS
GROUP BY JOB_NAME;