3

Oracle 10g DBで実行されているジョブがあり、実行プランは非常に単純です。

BYDAY=MON,TUE,WED,THU,FRI;BYHOUR=6,10,14,18

問題は、計画を変更する必要があるということですが、月曜日だけです。したがって、月曜日の最初のジョブは6ではなく8で実行する必要があります。その後、他のすべてのジョブ(10、14、18)と同様に実行します。一方、火曜日から金曜日までは上記のように実行する必要があります。

最も簡単な方法は、月曜日に2番目のジョブを作成し、元のジョブから月曜日を削除することです。ただし、これは、インポートごとに1つのジョブのみに依存するため、アプリケーションにとって問題になります。

したがって、質問は次のとおりです。スケジューラーに、TUE-FRIの6、10、14、18時とMONの8、10、14、18時に単一のジョブで実行するように指示する方法はありますか?

PL/SQL式で繰り返し間隔を指定する方法について読みました。しかし、私はそれを行う方法があるかどうかわかりませんでした。

ご協力いただきありがとうございます

4

1 に答える 1

5

複合スケジュールを作成し、作成時にそれをジョブに割り当てます。

例えば:

begin
  dbms_scheduler.create_schedule('MY_SCHED1', repeat_interval =>
  'FREQ=DAILY;BYDAY=TUE,WED,THU,FRI;BYHOUR=6,10,14,18');
END;
/
begin
dbms_scheduler.create_schedule('MY_SCHED2', repeat_interval =>
  'FREQ=DAILY;BYDAY=MON;BYHOUR=8,10,14,18');
END;
/
begin
dbms_scheduler.create_schedule('MAIN', repeat_interval =>
  'MY_SCHED1, MY_SCHED2');
END;
/

これで、スケジュール文字列の代わりに「MAIN」という名前のスケジュールをジョブに割り当てることができます。

于 2013-01-19T15:41:07.003 に答える