2

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

程序中有dbms_lock.sleep(N);一个。

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

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

这可能是一个问题吗?如果是这样 - 如何使用不同的从属 pid 运行作业?

更新

更新MAX_JOB_SLAVE_PROCESSES20. 现在奴隶 pid 不同了,但行为没有改变。

4

1 回答 1

1

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

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

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

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

于 2011-02-28T02:05:54.053 回答