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

You may also like...

답글 남기기

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