调度程序作业,从属pid和睡眠

时间:2011-02-28 01:30:19

标签: oracle oracle11gr2

我有2个调度程序作业,它们运行不同的调度程序。每个调度程序都运行相同的过程,但使用不同的参数。

程序中有dbms_lock.sleep(N);

我注意到当1个调度程序工作要睡觉时 - 另一个工作也会睡觉。直到第一个人醒来。

在我发现的调度程序日志中,两个调度程序jons都有不同的session id,但相同 Slave PID

这可能是个问题吗?如果是这样 - 如何运行具有不同奴隶工具的工作?

UPD

MAX_JOB_SLAVE_PROCESSES更新为20。现在奴隶的pid是不同的,但dehaviour没有改变。

1 个答案:

答案 0 :(得分:1)

如果您在* nix平台上,则PID指向正在执行相关代码的shadow * nix进程。通常使用专用服务器,每个会话都有自己的影子进程。在共享服务器中,您将拥有一个* nix进程池,并且会话将从池中选择一个可用的进程。如果没有可用的,并且已经启动了最大共享服务器进程数,则会话将等待。

类似的情况适用于DBMS_JOB,其最大值由JOB_QUEUE_PROCESSES和DBMS_SCHEDULER(MAX_JOB_SLAVE_PROCESSES)设置。它可以选择少开始。

注意:在执行DBMS_LOCK.SLEEP时,它仍处于代码路径中并仍在“运行”。只是没有做任何有用的事情。

PS。不确定PID如何在Windows上运行,它在单个进程中作为线程运行,而不是作为多个不同的进程运行。