これはどうすればよいのか分かりません。oracleで「シングルトン」スケジュール・ジョブを作成する方法は?
5分ごとに定期的に実行するようにスケジュールされたジョブですが、同時に2つのインスタンスが同時に実行されることはありません。前回の実行が5分を超えると次のインスタンスが延期またはスキップされます。
これを達成する最も簡単で最もエレガントな方法は何ですか?
これはどうすればよいのか分かりません。oracleで「シングルトン」スケジュール・ジョブを作成する方法は?
5分ごとに定期的に実行するようにスケジュールされたジョブですが、同時に2つのインスタンスが同時に実行されることはありません。前回の実行が5分を超えると次のインスタンスが延期またはスキップされます。
これを達成する最も簡単で最もエレガントな方法は何ですか?
DBMS_JOB
がそれを処理します。ちょうどそれを使用します。
Oracle 10gの管理者がガイドから:
「DBMS_JOBパッケージはDBMS_SCHEDULERパッケージによって置き換えられていますが、システムの負荷を管理するためのジョブを管理している場合は特に、あなたがパッケージの実行を取り消すことにより、DBMS_JOBを無効にすることを検討すべきです。ユーザーの特権。
これを行うには、DBMS_SCHEDULERをオラクル社が推奨します。 1つの利点は、これを使用している場合は、Enterprise Manager/Grid Controlを介してジョブを管理できることです。
まだ単純なケースでは、Tom KyteはDBMS_JOBを好んでいます。 http://stackoverflow.com/questions/4152111/dbms-job-vs-dbms-schedulerを参照してください。 – Vadzim
dbms_schedulerがdbms_jobを上回るその他の利点は、負荷、リソースの使用状況をよりよく制御でき、データベースの外部でジョブを実行できることです。
hth、 Ronald。
何らかの理由でdbms_jobまたはdbms_schedulerが機能しない場合は、DBMS_APPLICATION_INFO.SET_APPLICATION_INFO
を使用してジョブのモジュール名を設定し、v $ sessionを問い合せて現在そのモジュールを実行しているセッションの数を確認できます。
これはどのタイプの仕事ですか? PL/SQLストアド・プロシージャ
+1ホイールを再発明しないためです。また、最後または次回の実行情報を判断する必要がある場合は、DBA_JOBSおよびDBA_JOBS_RUNNINGビューを参照してください。 – dpbradley
お返事いただきありがとうございます。 同時に実行されているジョブの2つのインスタンスも回避していますか?はいの場合は、どのオプションを使用する必要がありますか? これは...私はまだ見つけるために管理していませんでした何 – PeterP
IIRCで、DBMS_JOBは(あなたがジョブ実行中の2つのインスタンスを持っていません)一度に一つを実行します。 Dbms_schedulerを使用すると、ジョブの失敗時の処理の柔軟性が向上します。 – DCookie