dbms_job.submit 을 통해 일정 간격이나 특정 시간대에 프로시져를 실행할 수 있다.
1. 현재 돌아가고 있는 잡을 확인합니다.
SELECT * FROM DBA_JOBS;
2. 다음과 같이 Job 을 등록할 수 있습니다.
1) 코드 예시
DECLARE |
|
X NUMBER; |
|
BEGIN |
|
SYS.DBMS_JOB.SUBMIT |
|
( X |
Job 넘버 (식별자) |
,'SMIS.proc_daily_stat_ins;' |
주기적으로 실행할 프로시져 또는 패키지이름 |
,to_date('05-09-2014 13:08:00','dd/mm/yyyy hh24:mi:ss') |
다음 번 Job 수행시간 |
,'SYSDATE + 30/1440' |
Job 수행 주기 |
,TRUE |
|
); |
|
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); END; |
|
2) Job 수행 간격에 대해 좀 더 살펴보면
SYSDATE + 7 |
7일에 한 번 |
SYSDATE + 1 |
하루에 한 번 |
SYSDATE + 1/24 |
한 시간(하루는 24시간)에 한 번 |
SYSDATE + 1/1440 |
1분(하루는 24*60=1,440분)에 한번 |
SYSDATE + 1/86400 |
1초(하루는 24*60*60=86,400초)에 한 번 |
그리고 trunc(SYSDATE, 'MI') + 1/24 와 같이 trunc 를 쓰는 이유는 정각에 Job을 수행하기 위해서이다. 만약 최초 작업이 자정에 이루어졌고 인터벌을 SYSDATE + 1/24 와 같이 준다고 해도 실제로는 00:00:00, 01:00:00, 02:00:00 에 작업이 진행되어야 하지만 실제로는 01:00:02, 02:00:05 와 같이 수행시간이 몇 초씩 늦어지게 된다. 이런 경우를 피하기 위해 trunc 함수를 이용해 분 단위에서 자르게 되는 것이다.
3. Job 의 변경 및 제거
1) 변경
BEGIN
DBMS_JOB.CHANGE(46, NULL, to_date('05-09-2014 12:50:00','dd/mm/yyyy hh24:mi:ss'), 'SYSDATE + 1/144');
END;
/
2) 제거
BEGIN
DBMS_JOB.REMOVE(45);
END;
/
'프로그래밍 Programming' 카테고리의 다른 글
R 프로그래밍 - R 편집기 R Editors (WinEDT, Tinn-R) (0) | 2014.09.06 |
---|---|
R 프로그래밍 - 좋은 R 코드를 작성하기 위한 팁 Tips for Writing Good R Code (0) | 2014.09.06 |
리눅스Linux 시간 수동 설정 (date, hwclock) (0) | 2014.09.05 |
R 프로그래밍 - Functions (Custom) (1) | 2014.08.30 |
R 프로그래밍 - Functions (Built in) (0) | 2014.08.29 |