오라클 자체적으로 프로시저, 패키지, 등의 OBJECT 를 ORACLE JOB QUEUE에 등록후 스케쥴링 하여 사용할수 있습니다.
단, ORACLE PARAMETER 의 JOB_QUEUE_PROCESSES가 0보다 커야 JOB 스케쥴링이 동작한다는것에 유의하세요.
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 10 ; –변경
# DBMS_JOB 패키지의 프로시저
DBMS_JOB.SUBMIT( ); : JOB 등록
DBMS_JOB.REMOVE( ); : 제거
DBMS_JOB.CHANGE( ); : 변경
DBMS_JOB.NEXT_DATE( ); : JOB의 다음 수행시간 변경
DBMS_JOB.INTERVAL( ); : JOB의 실행 CYCLE 지정
DBMS_JOB.WHAT( ); : JOB 수행 으로 등록된 OBJECT 를 변경
DBMS_JOB.RUN( ); : JOB을 수동으로 실행
BEGIN
DBMS_JOB.RUN(‘4’); — JOB 조회 후 번호 기술
END;
# SUBMIT 프로시져를 이용한 JOB등록 예제
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT (
JOB => X
,WHAT => ‘실행할 OBJECT’
,NEXT_DATE => TO_DATE(’17-11-2007 09:00:00′,’DD/MM/YYYY HH24:MI:SS’)
,INTERVAL => ‘TRUNC(SYSDATE) + 1 + 9/24’
,NO_PARSE => TRUE
);
SYS.DBMS_OUTPUT.PUT_LINE (‘JOB NUMBER IS:’|| TO_CHAR (X)) ;
END;
# INTERVAL을 세팅
1. 10분간격으로 실행
SYSDATE + 1/24/6
2. 현재 시간으로 부터 다음 날 현재 시간에 실행 (매일)
SYSDATE + 1 — 지금이 오후3시면 다음날 오후 3시 에 매일매일 실행
3. 매일 새벽 5시
TRUNC(SYSDATE) + 1 + 5 / 24
4. 매일 밤 10시
TRUNC(SYSDATE) + 20 / 24
# JOB의 확인
SELECT * FROM USER_JOBS;
NEXT_DATE 을 통해 다음 실행 예정인 시각을 확인
# 자세한 사항은 아래를 참고
HTTP://WWW.PSOUG.ORG/REFERENCE/DBMS_JOB.HTML