2016-09-15 4 views
1

2 일에 한 번 수행 할 작업 (일부 캐시 데이터 삭제)을 작성하려고합니다. 이것은 Oracle 11g에서 실행됩니다. 내가 할 clear_cache 원하는 오늘 (15/09/2016)이 블록을 실행한다고 가정하면 ..DBMS_SCHEDULER repeat_interval을 사용하여 2 일에 한 번 작업을 실행하십시오.

begin 
DBMS_SCHEDULER.CREATE_JOB (
    job_name    => 'clear_cache', 
    job_type    => 'PLSQL_BLOCK', 
    job_action   => 'begin delete from MY_CACHE;commit; end;', 
    start_date   => to_date('19/09/2016','dd/mm/rrrr')+ 19/24, 
    repeat_interval  => 'to_date(''19/09/2016'',''dd/mm/rrrr'')+ 2 + 19/24', 
    enabled    => TRUE); 
    end; 

는 그러나, 나는 REPEAT_INTERVAL 가치에 대해 확실하지 않다

을 : 지금까지 나는 다음과 같은 익명 블록 함께했다 에서 실행 :

19/09/2016 at 7 p.m 
21/09/2016 at 7 p.m. 
23/09/2016 at 7 p.m. 
etc 

내가 알고 내가

start_date   => sysdate, 
repeat_interval  => 'trunc(sysdate) + 7 + 7/24' 
를 사용하는 경우 0

는 그럼, 내가 원하는,하지만, 모든 2 일 다음주 월요일에 시작하고 반복하는 것입니다 7 p.m.에서 모든 7일을 반복 할 것이다, 실행 today을 시작하고 나는 그것을 달성하는 방법을 잘 모르겠습니다 ...

을 따라서 , 정확하게 무엇을 넣을 지 알고 싶습니다. repeat_interval ...

고마워요.

답변

3

자신을 굴리기보다는 built-in calendaring syntax을 사용하는 것이 좋습니다. 작업을 간격 2로 매일 실행하려면 2 일마다 실행되도록 지정하십시오.

구문은 FREQ=DAILY;INTERVAL=2입니다. 시작 날짜를 오후 7 시로 설정하면 현재 시간대로 그 시간에 시작됩니다.

매개 변수는 날짜이므로 실제 날짜 또는 타임 스탬프를 사용할 수 있습니다.

DBMS_SCHEDULER.CREATE_JOB (
    job_name    => 'clear_cache', 
    job_type    => 'PLSQL_BLOCK', 
    job_action   => 'begin delete from MY_CACHE; commit; end;', 
    start_date   => timestamp '2016-09-19 19:00:00', 
    repeat_interval  => 'FREQ=DAILY;INTERVAL=2', 
    enabled    => TRUE);