Oracle 11.2データベースにテーブルがあります。私は、テーブル1の特定のセルが1の値に更新され、テーブル2の既存の行の数が0より大きい場合、データベースにリモートサーバ上の実行可能ファイルを実行させたい。これを達成するためには、以下のことが可能ですか?初心者Oracleスケジューラを使用してイベントに基づいてジョブを開始する
Oracle Schedulerを使用してジョブを作成します。ジョブはすぐに実行され、リモートサーバー上で外部実行可能プログラムを実行するために使用されます。ジョブは存在しますが、下のステップ5まで実行されません(これは可能ですか?)。 http://docs.oracle.com/cd/E11882_01/server.112/e17120/schedadmin001.htm#BAJHIDDC
UPDATEステートメントで起動するテーブルの列にDMLトリガを添付します。表1に、特定のセルが1に等しい場合、ANDの数場合: http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#CIHEHBEB
はトリガーが、PL/SQLサブプログラムで http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#CIHEGACF
PL/SQLサブプログラムを起動し、次のビジネスロジックを実行してい表2の行が0より大きい場合は手順5に進み、そうでない場合は停止(終了、終了)します。仕事/スケジューラは、この機能を提供するために行われていない場合
- は、ステップ1
内のジョブを実行したり、同じことを達成するための別の方法は何ですか?つまり、データベーステーブルを変更して外部ジョブをトリガーします。
UPDATE 1:
それだけでパラメータevent_condition
を使用してDBMS_SCHEDULER.CREATE_JOB
とOracleのスケジューラを使用することにより、上記1-5のステップを実施することが可能ですかしら?
http://docs.oracle.com/cd/E11882_01/server.112/e25494/scheduse005.htm#CHDIAJEB
ここで、上記のリンクの例は次のとおり
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'process_lowinv_j1',
program_name => 'process_lowinv_p1',
event_condition => 'tab.user_data.event_type = ''LOW_INVENTORY''',
queue_spec => 'inv_events_q, inv_agent1',
enabled => TRUE,
comments => 'Start an inventory replenishment job');
END;
上記のコードは、アプリケーションがアイテムの在庫レベルが低閾値まで低下したことをスケジューラに信号を送るときに開始するジョブを作成しレベル。
上記のコードを何らかの形で修正して、目的の手順を実行できますか?たとえば、ここではevent_condition
を代わりに使用して、上記のステップ2〜4を省略できますか?もしそうなら、たとえば、queue_spec
の設定方法はどうでしょうか?
ありがとうJustin、はい、リモートサーバーにエージェントを配置する予定でした。上記の説明に従っているかどうかはわかりません(プロセスはかなり複雑です)。上記のアップデート1を参照してください。これは、使用できる場合には私が従う/実装する方が簡単かもしれません。 – ggkmath