database/oracle

Schedule 등록

아이짱구 2017. 2. 3. 11:28

-- 테이블 생성

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';


출처: 지기닷넷