Oracle에서 현재 실행 중이거나 과거에 실행된 Job Number를 조회하려면 사용 중인 Scheduler 유형에 따라 SQL 쿼리가 달라집니다.
1. DBMS_SCHEDULER 사용 시
- Oracle 10g 이상에서 사용하는 DBMS_SCHEDULER 기반의 Job을 조회하려면 다음 SQL을 실행
SELECT job_name, job_action, job_type, enabled, state, job_class, job_creator, schedule_name, last_start_date, next_run_date FROM dba_scheduler_jobs ORDER BY job_name;
- job_name: Job의 이름
- job_action: 실행될 작업
- enabled: 실행 가능 여부 (TRUE / FALSE)
- state: 현재 상태 (SCHEDULED, RUNNING, DISABLED 등)
- last_start_date: 마지막 실행 시간
next_run_date: 다음 실행 예정 시간
특정 Job의 상세 정보 조회
SELECT * FROM dba_scheduler_job_run_details WHERE job_name = 'JOB_NAME';
2. DBMS_JOB 사용 시
- Oracle 10g 이전의 DBMS_JOB을 사용하는 경우, Job Number는 job 컬럼에 저장됩니다.
SELECT job, what, schema_user, last_date, next_date, broken, failures, interval FROM dba_jobs ORDER BY job;
- job: Job Number
- what: 실행되는 PL/SQL 코드
- schema_user: Job을 실행하는 사용자
- last_date: 마지막 실행 시간
- next_date: 다음 실행 예정 시간
- broken: Job이 실패 후 멈췄는지 여부 (Y / N)
- failures: 실패 횟수
- interval: 실행 주기
특정 Job의 상태 확인
SELECT * FROM dba_jobs_running WHERE job = 12345; (Job Number 12345를 실행 중인 경우 확인)
3. 현재 사용자의 Job 조회
- 관리자가 아닌 경우, 현재 사용자의 Job만 보려면 DBA_ 대신 USER_ 뷰를 사용하세요.
- DBMS_SCHEDULER 기반
SELECT * FROM user_scheduler_jobs;
- DBMS_JOB 기반
SELECT * FROM user_jobs;