오라클에서 등록된 Job이 어떤 Stored Procedure(저장 프로시저) 또는 PL/SQL 블록을 호출하는지 확인하려면 사용 중인 Job 스케줄러 종류에 따라 다른 뷰를 조회해야 합니다.
⸻
1. DBMS_SCHEDULER 사용 시 (DBA_SCHEDULER_JOBS)
SELECT JOB_NAME,
PROGRAM_NAME,
JOB_ACTION
FROM DBA_SCHEDULER_JOBS
ORDER BY JOB_NAME;
설명
• JOB_NAME : 잡 이름
• PROGRAM_NAME : 프로그램(PL/SQL 블록 또는 저장 프로시저)이 등록된 경우 해당 프로그램 이름
• JOB_ACTION : 실제 실행되는 PL/SQL 블록 또는 저장 프로시저명 (PROCEDURE_NAME 형태로 나옴)
예를 들어, JOB_ACTION이 'MY_PACKAGE.MY_PROCEDURE'라면 MY_PACKAGE의 MY_PROCEDURE 프로시저를 실행하는 것임.
⸻
2. DBMS_JOB 사용 시 (DBA_JOBS)
SELECT JOB,
WHAT
FROM DBA_JOBS
ORDER BY JOB;
설명
• JOB: 잡 ID
• WHAT: 실제 실행할 PL/SQL 블록 또는 프로시저 호출
⸻
3. DBMS_SCHEDULER에서 JOB_ACTION이 NULL인 경우
• DBA_SCHEDULER_JOBS에서 JOB_ACTION이 NULL이고 PROGRAM_NAME이 존재하는 경우, 해당 프로그램이 실제 실행할 프로시저를 포함하고 있음.
SELECT PROGRAM_NAME,
PROGRAM_ACTION
FROM DBA_SCHEDULER_PROGRAMS
WHERE PROGRAM_NAME IN (SELECT PROGRAM_NAME FROM DBA_SCHEDULER_JOBS);
PROGRAM_ACTION이 실제 실행할 프로시저명을 포함함.
⸻
정리
• DBA_SCHEDULER_JOBS: JOB_ACTION 컬럼에서 실행할 프로시저 확인 (DBMS_SCHEDULER 사용 시)
• DBA_JOBS: WHAT 컬럼에서 실행할 프로시저 확인 (DBMS_JOB 사용 시)
• DBA_SCHEDULER_PROGRAMS: PROGRAM_NAME 기반으로 실행할 프로시저 확인 (JOB이 프로그램을 참조하는 경우)