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) |
STATUS | SUCCEEDED / 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;