Schedule 등록
-- 테이블 생성
CREATE TABLE EMP (ID NUMBER, NAME VARCHAR2(20));
-- 프로시저 생성
CREATE OR REPLACE PROCEDURE INS_EMP
IS
BEGIN
INSERT INTO EMP
VALUES (CEIL(DBMS_RANDOM.VALUE(1000, 10000)), DBMS_RANDOM.STRING('a', 3));
COMMIT;
END;
/
-- 스케줄(JOB) 생성
BEGIN
--DBMS_SCHEDULER.DROP_JOB('INSERT_EMP');
DBMS_SCHEDULER.CREATE_JOB
(JOB_NAME => 'INSERT_EMP' --> JOB 이름
, JOB_TYPE => 'STORED_PROCEDURE' --> 프로시저 형태로 실행
, JOB_ACTION => 'INS_EMP' --> 프로시저명
, START_DATE => TRUNC(SYSTIMESTAMP, 'dd') + 18 / 24 --> 시작시점
, REPEAT_INTERVAL => 'FREQ=MINUTELY;INTERVAL=30;BYHOUR=9,10,11,12,13,14,15,16,17,18'); --> 실행주기
DBMS_SCHEDULER.ENABLE('INSERT_EMP'); --> 스케줄 활성화
END;
/
-- 등록된 스케줄 확인
SELECT JOB_NAME
, JOB_TYPE
, JOB_ACTION
, CAST(START_DATE AS DATE) START_DATE
, CAST(NEXT_RUN_DATE AS DATE) NEXT_RUN_DATE
, REPEAT_INTERVAL
, ENABLED
, STATE
, JOB_PRIORITY
, RUN_COUNT
, FAILURE_COUNT
FROM USER_SCHEDULER_JOBS;
-- 작업결과 확인
SELECT LOG_DATE, ACTUAL_START_DATE, JOB_NAME, STATUS
FROM USER_SCHEDULER_JOB_RUN_DETAILS
WHERE JOB_NAME = 'INSERT_EMP';
출처: 지기닷넷