개발

오라클 잡큐 사용하기 (oracle, jobs)

학생. 2007. 9. 4. 17:21
오라클에 등록된 프로시져 혹은 패키지를 주기적으로 실행할 수 있습니다.

평소 오렌지를 사용해서 오렌지 sql tool에서 등록하는 방법입니다.
exec DBMS_JOB.SUBMIT(:num, 'SP_BATCH_PER_HOUR;', SYSDATE, 'trunc(SYSDATE+(1/24),''''HH24'''')');

파라메터들을 살펴보면
첫번째 : job number입니다. 위에서 처럼 바인드 변수를 지정해두고 int값을 아무숫자나 넣어두시면
알아서 job넘버가 할당됩니다.
두번째 : 실행할 프로시져 명입니다.
세번째 : 마지막으로 해당 프로시져가 실행된 시간입니다.
네번째 : 다음번 프로시져가 실행될 시간입니다.

다음번 실행될 시간의 경우는 해당 잡이 실행되는 시점에 처음 등록한 형식의 시간이 등록됩니다.
현재 위에서 예로든 잡을 등록할 경우에는
제가 17:23분에 해당 잡을 등록하고 커밋하는 순간에 해당 잡이 실행이되고
현재 시간에대한 trunc(SYSDATE+(1/24),'HH24') 식을 계산한 시간
즉 18:00분이 입력이 됩니다. 정확하게는 YYYY/MM/DD HH24:MI:SS 형식입니다.
만약 trunc없이 SYSDATE+(1/24)의 형식으로 등록한 경우라면 실행된 시간을 기준으로 1시간 후
18:23분이 다음 실행시간으로 등록이 됩니다.
매시 정각을 원하시면 처음 형식으로 등록하시면 되겠습니다.

그리고 잡 실행이 지정된시간에 정확하게 실행이되지않고 보통 몇초(경험상 2-5초)정도 차이가 납니다.
예를들어 12:00에 최초잡을 실행시키고 sysdate+1/24로 할경우 최초에는 실행시간이 12:00:00이더라도
다음번에는 01:00:03 다음에는 02:00:05 등.. 점점 시간이 차이가 나게됩니다.
그리서 정각에 최초등록후 sysdate+1/24로 등록하는것보다는 trunc(SYSDATE+(1/24),'HH24')로 등록하는게
정확한 실행시간을 보장합니다.

기타 주로 사용되는 프로시져는
삭제 exec DBMS_JOB.REMOVE(job_number);
정지 exec DBMS_JOB.BROKEN(job_number, TRUE);
등이 있습니다.

현재 등록된 잡은
SELECT * FROM USER_JOBS;
쿼리로 확인이 가능합니다.

위 내용은 [이곳] 에서 내용을 참고하였습니다.
반응형

'개발' 카테고리의 다른 글

DWR : Easy Ajax for JAVA  (1) 2007.11.06
톰캣5.5 admin  (0) 2007.10.19
부팅시 실행되는 데몬들 설정하기.  (0) 2007.05.11
플래쉬와 html 엘리먼트의 우선순위.  (0) 2007.04.06
스트래티지 패턴(Strategy Pattern)  (0) 2007.03.18