ORACLE·plsql

[복사되는블로그 꼬마갱이]오라클 JOB 등록하기(문법,설명,예제)

administrators 2010. 1. 8. 17:22

1. 문법 - Oracle Job 등록 형식

BEGIN
   DBMS_JOB.submit

①                  (   job번호,
②                      'job내용;',
③                       job초기실행시간,
④                      'job다음실행시간',
                      FALSE
                  );
END;
/

 

2. 각 인수 설명
    ① job번호
        실행시 파라미터를 입력해야하지만 아무 숫자나 입력하면 알아서 입력된다.

    ② job내용('   ;'필수)
        쿼리를 입력해도 되고 procedure명을 입력해도 된다.

    ③ job초기실행시간
        등록 후 처음으로 실행되는 시간이다.

    ④ job다음실행시간('   '필수)
        실행 후 다음 실행시간이다.(반복되는 시간이다)
        'sysdate'                    --> 하루 한번
        'sysdate + 1/24'          --> 한시간에 한번
        'sysdate + 1/24/60'     --> 1분에 한번 ㅡㅡ+
        'trunc(SYSDATE+(1/24),'HH24')'   --> 이 방법이 더 정확하다는 http://hopeland.kr/216

 

3. 기타

* JOB 조회
    SELECT * FROM USER_JOBS;

* JOB 삭제
    exec DBMS_JOB.REMOVE( job_number );  --등록된 JOB번호를 조회하여 삭제한다.

* JOB 정지
    exec DBMS_JOB.BROKEN( job_number, TRUE);

 

4. 예제

* 해당 테이블의 last_date(최종수정일)기준으로 2시간전(2/24) 데이터를 삭제한다.

최초 실행은 등록 후 1분(sysdate + 1 / 24 / 60)후에 실행하고 2시간 간격(sysdate + 2/24)으로 실행한다.

 

BEGIN
   DBMS_JOB.submit
                  (:jobno,
                   'DELETE FROM table_name WHERE last_date < sysdate - 2/24;',
                    sysdate + 1 / 24 / 60,
                   'sysdate + 2/24',
                   FALSE
                  );
END;
/

 

- write by 꼬마갱이 2010.01.08 -




내용추가

토드에서 잘안되는 경우

 - 좌상단 Excute statement를 클릭하여 등록하자.

토드에서 삭제, 정지가 안되는 경우

 - 위에 있는 쿼리를 이용하여 정지와 삭제를 하자.

잡등록후 실행이 안되거나 다른 사용자한테 보이지 않는다.

 - commit을 안한 경우 이다.(이상하지만 해보라 ㅡㅡ;;)


- write by 꼬마갱이 2010.03.02 -




내용추가

초기 실행 일시를 지정하고 간격(다음실행일시)를 sysdate + 1 와 같이 하면
실행시간을 기준으로 하루에 한번 실행한다.

예) 최초실행은 오후4시로 지정하고 간격을 sysdate + 1로 지정하였다.

    --> 매일 오후 4시에 실행된다.

그러나 처음실행은 오후4시로 지정하고, 다음 실행시간은 매일 자정(0시)로 하고 싶다.

최초 실행 날짜와 시간 지정

    TO_DATE ('20100303' || '160000', 'YYYYMMDD HH24:MI:SS')

다음 실행 날짜와 시간 지정

    'TO_DATE (''20100303'' || ''000001'', ''YYYYMMDD HH24:MI:SS'') + 1'

- write by 꼬마갱이 2010.03.03 -




'ORACLE·plsql' 카테고리의 다른 글

[펌]deterministic  (0) 2010.02.16
한글 초성을 리턴해주는 함수  (0) 2010.02.16
[펌]PL/SQL for Loop 사용법  (0) 2009.12.23
[펌]Cursor  (0) 2009.12.23
[펌]Oracle 프로시저 조건문(IF)  (0) 2009.12.23