Programming/Oracle

ORACLE JOB

초록깨비 2021. 5. 7. 13:48
728x90

[ ORACLE JOB 설정 ] 

 

 

1. JOB 등록 

 

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

 

   

   declare

       job_no number;

   begin

      dbms_job.submit(job_no, 'dbms_output.put_line(''ok'');', sysdate, 'sysdate + 1');

   end;

 

 

 

  [실행주기 예제 ]  

항목 설명
'sysdate + 7'  주 1회 실행
'sysdate + 1'  다음날 1회 실행
 'next_day(sysdate, ''MONDAY'')'  매주 월요일 실행
'null'  1회 실행
'sysdate + 1/24' 1시간에 1회 실행
'sysdate + 1/24/60' 1분에 1회 실행
'trunc(sysdate+1) + 2/24' 다음날 2시 1회 실행
'trunc(sysdate+1) + 2/24+30/1440' 다음날 2시 30분 1회 실행

 

2. JOB 변경 

 

  BEGIN

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

     COMMIT;

  END;

 

 

 begin

    dbms_job.change(10, null, null, 'sysdate+2');

    commit;        -- commit하면 변경 내용이 바로 적용

 end;

  

 

 

3. JOB 조회 

 

   SELECT * FROM USER_JOBS;

   SELECT * FROM DBA_JOBS;

 

 

 

4. JOB 삭제 

 

  begin

     dbms_job.remove(job_no);    -- SELECT * FROM USER_JOBS를 조회하여 JOB_NO 확인!

     commit;

  end;

 

 

 

 

 

5. JOB 정지 or 재시작 

 

  EXECUTE DBMS_JOB.BROKEN(JOB_NO, TRUE);    -- 정지

  EXECUTE DBMS_JOB.BROKEN(JOB_NO, FALSE);   -- 재시작

 

 

  execute dbms_job.broken(2, TRUE);     -- 2번 JOB 정지

  execute dbms_job.broken(2, FALSE);    -- 2번 JOB 재시작 

 

 

6. JOB next 실행 시간 변경 

 

  EXECUTE DBMS_JOB.NEXT_DATE(JOB_NO, NEXT_DATE);

 

  execute dbms_job.next_date(2, SYSDATE+1);

 

 

 

7.  JOB 실행주기 변경 

 

  EXECUTE DBMS_JOB.INTERVAL(JOB_NO, INTERVAL);

 

  execute dbms_job.interval(2, 'sysdate + 7');

 

 

 

8. JOB 수동 실행 

 

  EXECUTE DBMS_JOB.RUN(JOB_NO);

 

  execute dbms_job.run(2);    -- 2번 JOB 실행

728x90