ORACLE2009. 11. 21. 13:24

[ORACLE] DBMS_JOB 패키지를 이용한 JOB관리 데이터베이스

2009/04/30 10:16

ORACLE 에서 DBMS_JOB 패키지를 이용해서 주기적으로 작업을 실행하는

방법 입니다.

 

-- JOB 등록
-- 1일 - 10분단위 : 144, 30분 단위 : 48, 한시간 단위 : 24
-- 1/144 -> 0시 10분
DECLARE
    JOB_NUMBER NUMBER;
BEGIN
    -- 매일 오전 1시 10분
    DBMS_JOB.SUBMIT (
          JOB_NUMBER                             -- OUTPUT
        , 'do_job();'                                  -- WHAT
        , SYSDATE                                    -- NEXT_DATE
        , 'TRUNC(SYSDATE + 1) + 7/144'    -- INTERVAL (매일 오전 1시 10분)
        , FALSE                                        -- NO_PARSE
    );
    COMMIT;
END;
/

 

OUTPUT
  이것은 식별자로써 job이 생성될때 할당된다. 이 job 번호는 job을 수정하거나
  제거할때 job을 식별하기 위해 사용된다.

WHAT
  이것은 실행시키고자 하는 PL/SQL 코드이다. WHAT 파라미터는 세미콜론(;)으로
  끝나야 한다.

NEXT_DATE
  이것은 job이 실행될 시간이다. 기본값은 SYSDATE 이다.

INTERVAL
  job 이 다음번에 실행될 시간을 계산하는 식이다. 기본값은 NULL이다. INTERVAL은
  다음 시간값이나 NULL이어야 한다. 이 값은 VARCHAR2 타입이고 작은 따옴표로
  둘러싸여져야 한다.

NO_PARSE
  만약 NO_PARSE가 FALSE로 설정(이것이 기본값이다)되면, 오라클은 job과 연관된
  프로시저를 파싱한다. 만약 NO_PARSE가 TRUE로 설정되면, 오라클은 job과 연관된
  프로시저를 job이 처음 실행될 때 파싱한다. 예를 들어, 만약 job과 관련된
  테이블이 생성되기 전에 job 을 submit 하기를 원한다면 NO_PARSE를 TRUE 로
  설정하면 된다.


-- JOB 조회
SELECT JOB, WHAT, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN FROM USER_JOBS;

 

 

-- JOB 강제 실행
-- JOB_NO
BEGIN
    DBMS_JOB.RUN(2);
   COMMIT;
END;
/

 

-- JOB 중지 및 실행
-- JOB_NO, BROKEN(TRUE, FALSE)
BEGIN
    DBMS_JOB.BROKEN(1, FALSE);
    COMMIT;
END;
/

 

-- JOB 삭제
BEGIN
    DBMS_JOB.REMOVE(2);
    COMMIT;
END;
/

'ORACLE' 카테고리의 다른 글

SQL Processing Concepts  (0) 2009.12.09
Oracle Database 10g: DBA를 위한 20가지 주요 기능  (0) 2009.11.21
Oracle의 ROWNUM과 INDEX를 이용한 Paging  (0) 2009.11.21
오라클 권한  (0) 2009.11.21
락해제, 비번 변경 에디터 설정  (0) 2009.11.21
Posted by Tiwaz