20260820-1

이상우·2026년 8월 20일

오라클에서 사용자가 등록한 Job / Scheduler가 있는지 확인하려면 보통 아래 뷰들을 보면 됩니다.

  1. 현재 계정이 등록한 Scheduler Job

DBMS_SCHEDULER로 생성한 Job입니다.

SELECT
JOB_NAME,
ENABLED,
STATE,
JOB_TYPE,
JOB_ACTION,
REPEAT_INTERVAL,
START_DATE,
LAST_START_DATE,
NEXT_RUN_DATE
FROM USER_SCHEDULER_JOBS
ORDER BY JOB_NAME;

전체 사용자의 Job을 확인할 권한이 있다면:

SELECT
OWNER,
JOB_NAME,
ENABLED,
STATE,
JOB_TYPE,
JOB_ACTION,
REPEAT_INTERVAL,
LAST_START_DATE,
NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
ORDER BY OWNER, JOB_NAME;

특정 사용자가 만든 것만 보려면:

SELECT *
FROM DBA_SCHEDULER_JOBS
WHERE OWNER = '사용자명';

Oracle 사용자명은 보통 대문자로 조회합니다.


  1. 별도로 등록된 Schedule 확인

Job 자체가 아니라 DBMS_SCHEDULER.CREATE_SCHEDULE로 별도 Schedule을 만들어 연결했을 수도 있습니다.

SELECT
OWNER,
SCHEDULE_NAME,
START_DATE,
REPEAT_INTERVAL,
END_DATE,
COMMENTS
FROM DBA_SCHEDULER_SCHEDULES
ORDER BY OWNER, SCHEDULE_NAME;

현재 사용자 것만:

SELECT *
FROM USER_SCHEDULER_SCHEDULES;

Job에서 어떤 Schedule을 사용하는지도 확인할 수 있습니다.

SELECT
OWNER,
JOB_NAME,
SCHEDULE_OWNER,
SCHEDULE_NAME
FROM DBA_SCHEDULER_JOBS
WHERE SCHEDULE_NAME IS NOT NULL;


  1. 예전 방식인 DBMS_JOB도 확인

오래된 시스템에서는 DBMS_SCHEDULER가 아니라 DBMS_JOB.SUBMIT으로 등록되어 있을 수 있습니다.

SELECT
JOB,
LOG_USER,
PRIV_USER,
SCHEMA_USER,
LAST_DATE,
NEXT_DATE,
INTERVAL,
BROKEN,
WHAT
FROM DBA_JOBS
ORDER BY JOB;

현재 계정 것만:

SELECT *
FROM USER_JOBS;

WHAT 컬럼을 보면 실제 실행하는 PL/SQL이나 프로시저를 확인할 수 있습니다.


따라서 "사용자가 수동으로 뭔가 배치성 작업을 걸어놨는지 전부 확인"하려는 목적이면 우선 아래 3개를 보면 됩니다.

-- 신형 Scheduler Job
SELECT OWNER, JOB_NAME, ENABLED, STATE,
JOB_ACTION, REPEAT_INTERVAL, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
ORDER BY OWNER, JOB_NAME;

-- 별도 Scheduler Schedule
SELECT OWNER, SCHEDULE_NAME, REPEAT_INTERVAL
FROM DBA_SCHEDULER_SCHEDULES
ORDER BY OWNER, SCHEDULE_NAME;

-- 구형 DBMS_JOB
SELECT JOB, LOG_USER, WHAT, INTERVAL, NEXT_DATE, BROKEN
FROM DBA_JOBS
ORDER BY LOG_USER, JOB;

특히 "매일 새벽 2시에 누가 프로시저 실행 걸어놨나?" 같은 걸 찾는 거라면 DBA_SCHEDULER_JOBS의 JOB_ACTION, REPEAT_INTERVAL, NEXT_RUN_DATE와 DBA_JOBS의 WHAT, INTERVAL을 같이 확인하는 게 가장 빠릅니다.

0개의 댓글