2011-02-28 6 views
2

私は2つのスケジューラジョブを持っており、それらは異なるスケジューラプログラムを実行します。各スケジューラー・プログラムは同じ手順を実行しますが、異なる引き数を使用します。スケジューラジョブ、スレーブpidおよびスリープ

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

私は、1つのスケジューラジョブがスリープ状態になると気付きました。もう1人はスリープ状態になります。最初のものが目を覚ますまで。両方のスケジューラジョンが異なるsession idを持っていることを私が見つけたスケジューラログで

、しかし同じSlave PID

これが問題になりますか?もしそうなら、別のスレーブpidでジョブを実行する方法は?

UPDは:

20MAX_JOB_SLAVE_PROCESSESを更新しました。今では奴隷のピードは違っていますが、清掃は変わりません。

答えて

1

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

同様の状況がDBMS_JOBに適用され、JOB_QUEUE_PROCESSESとDBMS_SCHEDULER(MAX_JOB_SLAVE_PROCESSES)によって最大値が設定されます。それはより少なく開始することを選ぶかもしれません。

注:DBMS_LOCK.SLEEPを実行している間は、まだコード・パスにあり、実行中です。役に立つだけのことをしないでください。

PS。 PIDがWindows上でどのように動作するかは不明ですが、複数の異なるプロセスではなく、単一のプロセス内でスレッドとして動作します。

+0

同じスレーブPIDは、どのスレッドがスリープ状態になってもスリープ状態になることを意味しています。 (目標はsolarisです) – zerkms

関連する問題