2013-10-30 2 views
2

매년 2am on the first Sunday in October에서 실행되는 작업을 만들고 싶습니다. 아래 코드를 시도했습니다. 그러나 작업을 사전에일년에 한 번씩 실행할 스케쥴러 작업을 만듭니다.

BEGIN 
DBMS_SCHEDULER.CREATE_JOB(job_name  => 'To_DST_Australia', 
          job_type  => 'PLSQL_BLOCK', 
          JOB_ACTION  => 'BEGIN 
               NULL; 
               END;', 
          start_date  => SYSTIMESTAMP, 
          repeat_interval => 'FREQ=YEARLY; BYMONTH=OCT; BYDAY=1SUN; BYHOUR=2; BYMINUTE=00; BYSECOND=00', 
          end_date  => NULL, 
          enabled   => TRUE, 
          comments  => '1st Sunday in October'); 
END; 
/

감사를 생성에 대한 오류와 같은,

Error report: 
ORA-27419: unable to determine valid execution date from repeat interval 
ORA-06512: at "SYS.DBMS_ISCHED", line 124 
ORA-06512: at "SYS.DBMS_SCHEDULER", line 271 
ORA-06512: at line 2 

여기 코드입니다 얻었다.

+0

을'YEARLY' 잘 실행. 그래도 'YEARLY'의 경우 실패 이유를 확실히 알 수 없습니다. 우리가'YEARLY'를 사용한다면'BYDAY = SUN'을 지정하면됩니다. – learningloop

+0

오라클 워드 프로세서 : * "월별 빈도를 사용하는 경우 숫자를 사용하거나 월별로 4th THU를 사용하는 경우 월별로 26 번째 금요일을 지정할 수 있습니다."* http://docs.oracle. com/cd/E16655_01/appdev.121/e17602/d_sched.htm # ARPLS72263 –

+1

올해의 첫 번째 일요일은 10 월에 발생하지 않으므로 YEARLY 표현은 날짜와 일치하지 않습니다. 일년 중 첫 번째 일요일을 찾으십시오. 그러나 10 월에 있어야합니다). –

답변

2

는 매월 주파수를 사용하는 대신 'FREQ = MONTHLY` 변경

DECLARE 
start_date  TIMESTAMP; 
return_date_after TIMESTAMP; 
next_run_date  TIMESTAMP; 
BEGIN 
    start_date := TO_TIMESTAMP_TZ('01-JAN-2013 00:00:00','DD-MON-YYYY HH24:MI:SS'); 

    return_date_after := start_date; 
    FOR i IN 1..5 
    LOOP 
    dbms_scheduler.evaluate_calendar_string(
    'FREQ=MONTHLY; BYMONTH=OCT; BYDAY=1SUN; BYHOUR=2', 
    start_date, return_date_after, next_run_date); 

    dbms_output.put_line('next_run_date: ' || next_run_date); 
    return_date_after := next_run_date; 
    END LOOP; 
END; 
/

next_run_date: 06/OCT/13 02:00:00.000000 AM 
next_run_date: 05/OCT/14 02:00:00.000000 AM 
next_run_date: 04/OCT/15 02:00:00.000000 AM 
next_run_date: 02/OCT/16 02:00:00.000000 AM 
next_run_date: 01/OCT/17 02:00:00.000000 AM 
+0

좋습니다. 고마워요 .. !! :) – Dba

관련 문제