2

異なるスケジューラ プログラムを実行する 2 つのスケジューラ ジョブがあります。各スケジューラ プログラムは同じ手順を実行しますが、引数は異なります。

dbms_lock.sleep(N);手順にがあります。

1 つのスケジューラ ジョブがスリープ状態になると、別のジョブもスリープ状態になることに気付きました。最初の目が覚めるまで。

私が見つけたスケジューラ ログでは、両方のスケジューラ jons が異なるsession id、同じ Slave PID.

これは問題になる可能性がありますか?もしそうなら - 異なるスレーブ pid でジョブを実行する方法は?

更新日:

に更新さMAX_JOB_SLAVE_PROCESSESれました20。現在、スレーブ pid は異なりますが、動作は変更されていません。

4

1 に答える 1

1

*nix プラットフォームを使用している場合、PID は問題のコードを実行しているシャドウ *nix プロセスを指します。通常、専用サーバーでは、各セッションに独自のシャドウ プロセスがあります。共有サーバーでは、* nix プロセスのプールがあり、セッションはプールから使用可能なプロセスを選択します。使用可能なプロセスがなく、最大数の共有サーバー プロセスがすでに開始されている場合、セッションは待機します。

JOB_QUEUE_PROCESSES と DBMS_SCHEDULER ( MAX_JOB_SLAVE_PROCESSES )によって最大値が設定された DBMS_JOB にも同様の状況が当てはまります。より少なく開始することを選択する場合があります。

注: DBMS_LOCK.SLEEP を実行している間も、コード パス内にあり、まだ「実行中」です。有益なことをしていないだけです。

PS。複数の個別のプロセスとしてではなく、単一のプロセス内のスレッドとして動作する Windows で PID がどのように機能するかはわかりません。

于 2011-02-28T02:05:54.053 に答える