1

複数のスケジュールがあり、それらすべてをジョブの repeat_interval に提供したいと考えています。しかし、私はこれを行う方法を見つけることができません.Oracleのドキュメントにはそれが可能であると書かれていますが、例が見つかりません. どんな助けでも大歓迎です。これは私が試したものですが、うまくいきません:

ORA-06512: 行 2 27418.00000 - 「繰り返し間隔またはカレンダーの構文エラー」

*原因: 繰り返し間隔またはカレンダー定義が有効な構文として認識されませんでした。

begin
    dbms_scheduler.create_schedule('SCHED1', 
          repeat_interval => 'FREQ=DAILY;BYHOUR=9;BYMINUTE=55');
    dbms_scheduler.create_schedule('SCHED2', 
          repeat_interval => 'FREQ=DAILY;BYHOUR=15;BYMINUTE=15'); 
    DBMS_SCHEDULER.CREATE_JOB(
          JOB_NAME           =>  'SCHED_TEST_JOB',
          JOB_TYPE           =>  'STORED_PROCEDURE',
          JOB_ACTION         =>  'SCHED_TEST_JOB_PROCEDURE',
          START_DATE         =>  SYSDATE,
          REPEAT_INTERVAL    =>  'FREQ=SCHED1,SCHED2;',
          AUTO_DROP          =>  FALSE,
          ENABLED            =>  FALSE);
end;
/
4

2 に答える 2

0

次のようにスケジュールを組み合わせたいですか?

SQL>  BEGIN
  2    dbms_scheduler.create_schedule('sched1',
  3            repeat_interval => 'FREQ=YEARLY;
  4                                BYDATE=0130,0220,0725');
  5    dbms_scheduler.create_schedule('sched2',
  6           repeat_interval => 'FREQ=MONTHLY;
  7                               INTERVAL=2;
  8                               BYMONTHDAY=15;
  9                               BYHOUR=9,17;
 10                               INCLUDE=sched1');
 11  END;
 12  /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2  DBMS_SCHEDULER.create_job (
  3       job_name      => 'test_sched_job_definition',
  4       schedule_name => 'sched2',
  5       job_type      => 'PLSQL_BLOCK',
  6       job_action    => 'BEGIN DBMS_STATS.gather_schema_stats(''SCOTT''); END;',
  7       enabled       => TRUE,
  8       comments      => 'Job defined by existing schedule and inline program.');
  9  END;
 10  /

PL/SQL procedure successfully completed.
于 2015-09-08T09:32:42.013 に答える
0

create_job 繰り返し間隔の最後に余分なセミコロンがあると思います。

構文は次のとおりです。

combined_schedule = schedule_list [";" include_clause][";" exclude_clause] [";" intersect_clause]

... schedule_list は次のとおりです。

schedule_list = schedule_clause ("," schedule_clause)
于 2015-09-08T08:14:11.487 に答える