DBMS_SCHEDULER 등록 예제


-- 테이블 생성
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';

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다