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, ”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);
최신 댓글