ORACLE JOB 등록방법 1 4 32,439

by 신혜정 JOB_QUEUE_PROCESSES Oracle JOB [2012.10.22 19:36:14]



이곳에 ORACLE JOB 등록 방법에 대한 글이 부족한거 같아서

제가 퍼온 글을 올립니다. 

원문 링크는 맨 아래에 있습니다.

-------------------------------------------------------------------------------------------------------------------

오라클에서는 유닉스의 cron tab과 비슷한 기능을 제공합니다.

 

오라클 자체적으로 프로시저, 패키지, 등의 object 를 oracle job queue에 등록후 스케쥴링 하여 사용할수 있습니다.

 

 

단, oracle parameter 의 JOB_QUEUE_PROCESSES가 0보다 커야 JOB 스케쥴링이 동작한다는것에 유의하세요.

 

방법은,

 

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 10 ; --변경

 

 

 

그럼 간단하게, DBMS_JOB 패키지의 프로시저를 살펴보면,

 

DBMS_JOB.submit      : job 등록

DBMS_JOB.remove     : 제거

DBMS_JOB.change     : 변경

DBMS_JOB.next_date  : job의 다음 수행시간 변경

DBMS_JOB.interval     : job의 실행 cycle 지정

DBMS_JOB.what         : job 수행 으로 등록된 object 를 변경

DBMS_JOB.run           : job을 수동으로 실행

 

입니다. ^^;

 

 

 

 

다음은 submit 프로시져를 이용한 job등록 예제입니다.

 

 

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    ( job       => X 
     ,what      => '실행할 object'
     ,next_date => to_date('17-11-2007 09:00:00','dd/mm/yyyy hh24:mi:ss')
     ,interval  => 'TRUNC(SYSDATE) + 1 + 9/24'
     ,no_parse  => TRUE
    );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); -- 이부분은 job큐의 번호가 됩니다.
END;

 

 

다음은 interval을 세팅하는 예제입니다.

 

1. 10분간격으로 실행

SYSDATE + 1/24/6

 

 

2. 현재 시간으로 부터 다음 날 현재 시간에 실행 (매일)

SYSDATE + 1    -- 지금이 오후3시면 다음날 오후 3시 에 매일매일 실행됩니다.

 

 

3. 매일 새벽 5시

TRUNC(SYSDATE) + 1 + 5 / 24

 

 

4. 매일 밤 10시

TRUNC(SYSDATE)  + 20 / 24

 

입니다.

 

 

 

 

JOB의 확인은

SELECT * FROM user_jobs;로 확인할수 있으며,

 

 

next_date 을 통해 다음 실행 예정인 시각을 확인할수 있습니다.

 

 

 

 

 

이 오라클의 job 스케쥴링을 이용하면,

서버의 이용이 낮은 새벽시간대 등에 자원이 많이 들어가는 연산을 실행시키면, 오라클 서버의 부담을 줄일수 있습니다.

 

아참 오라클의 스냅샷(snapshot) 또한 oracle job 스케쥴링에 의해 동작합니다.

스냅샷을 생성한 경우에 user_jobs를 살펴보면 job으로 등록되어 있는것을 확인할수 있습니다.

 

 

자세한 사항은 아래를 참고하세요.

http://www.psoug.org/reference/dbms_job.html

 

 

 

그리고 oracle 10g 에서 부터는 scheduler라는 더 향상된 메커니즘을 제공합니다.

참고 : http://www.oracle.com/technology/global/kr/pub/articles/10gdba/week19_10gdba.html

 

 

 

부족한 강좌 끝까지 읽어 주셔서 감사합니다.


--원문 : http://blog.naver.com/jadin1?Redirect=Log&logNo=70024291567

 

by 까망소 [2012.10.23 13:50:09]
제게 유용한 내용이었습니다. 감사합니다. *^ㅡ^)/

by 초록짱 [2013.04.22 13:46:52]
깔끔하고 알찬 정보 감사합니다.
많은 도움이 되었습니다..^&^

by 박민철 [2014.08.21 11:19:02]

예전에 이용할려고 찾다 시간설정을 못해 포기했는데..

좋은 좋보 감사합니다.^^


by 맛있는파닭 [2017.07.01 11:39:03]

TRUNC(SYSDATE)  + 20 / 24 이건 매일밤 8시 아닌가용??? 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입