database/oracle

Job Management

아이짱구 2017. 2. 9. 16:37

1. JOB 등록


DBMS_JOB.SUBMIT(JOB_NO, WHAT, NEXT_DATE, INTERVAL);


예:

DECLARE

   job_no number;

BEGIN

   DBMS_JOB.SUBMIT(JOB_NO,

                   'DBMS_PUTPUT.PUT_LINE(''OK'');',

                   SYSDATE,

                   'SYSDATE + 1');

END;


실행주기 계산

  • 'SYSDATE + 7': 일주일에 1회 실행
  • 'SYSDATE + 1': 하루에 1회 실행
  • 'NEXT_DAY(SYSDATE, ''TUESDAY'')' : 매주 화요일에 실행
  • 'NULL':  1회 실행
  • 'SYSDATE + 1 / 24': 1시간에 1회 실행
  • 'SYSDATE + 1 / 24 / 60': 1분에 1회 실행
  • 'TRUNC(SYSDATE + 1) + 2 / 24': 다음날 2시에 1회 실행

2. JOB 변경


BEGIN

   DBMS_JOB.CHANGE(JOB_NO, WHAT, NEXT_DATE, INTERVAL);

   COMMIT;

END;

 

예:

BEGIN

   DBMS_JOB.CHANGE(10, NULL, NULL, 'SYSDATE + 3');

   COMMIT;

END;


COMMIT을 사용하게 되면 변경 내용이 적용된다.


3. JOB 조회


SELECT * FROM USER_JOBS;

SELECT * FROM DBA_JOBS;


4. JOB 삭제


BEGIN

   DBMS_JOB.REMOVE(JOB_NO);

   COMMIT;

END;


5. JOB 정지/재시작


EXECUTE DBMS_JOB.BROKEN(JOB_NO, TRUE);

EXECUTE DBMS_JOB.BROKEN(JOB_NO, FALSE);

 

예:

EXECUTE DBMS_JOB.BROKEN(10, TRUE);

EXECUTE DBMS_JOB.BROKEN(10, FALSE);


6. JOB 다음 실행 시간 변경


EXECUTE DBMS_JOB.NEXT_DATE(JOB_NO, NEXT_DATE);

 

예:

EXECUTE DBMS_JOB.NEXT_DATE(10, SYSDATE+1);


7. JOB 실행 주기 변경


EXECUTE DBMS_JOB.INTERVAL(JOB_NO, INTERVAL);

 

예:

EXECUTE DBMS_JOB.INTERVAL(10, 'sysdate + 7');


8. JOB 실행


EXECUTE DBMS_JOB.RUN(JOB_NO);


출처: 지기닷넷