Планировщик заданий, раб пид и сон - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть 2 задания планировщика, которые запускают разные программы планировщика.Каждая из программ планировщика запускает одну и ту же процедуру, но с разными аргументами.

В процедуре есть dbms_lock.sleep(N);.

Я заметил, что когда одно задание планировщика переходит в спящий режим - другоеодин тоже спит.До первого пробуждения.

В журналах планировщика я обнаружил, что оба jons планировщика имеют разные session id, но одинаковые Slave PID.

Может ли это быть проблемой?Если это так - как запускать задания с разными подчиненными пидами?

UPD :

Обновлено MAX_JOB_SLAVE_PROCESSES до 20.Теперь рабские пиджи разные, но поведение не изменилось.

1 Ответ

1 голос
/ 28 февраля 2011

Если вы работаете на платформе * nix, PID указывает на процесс shadow * nix, который выполняет соответствующий код. Обычно с выделенными серверами каждый сеанс будет иметь свой собственный теневой процесс. На общем сервере у вас будет пул * nix процессов, и сессии выберут доступный из пула. Если ни один из них не доступен, а максимальное количество процессов общего сервера уже запущено, сеанс ожидает.

Аналогичная ситуация применяется для DBMS_JOB, с максимумом, установленным JOB_QUEUE_PROCESSES, и DBMS_SCHEDULER ( MAX_JOB_SLAVE_PROCESSES ). Он может начать меньше.

Примечание. Во время выполнения DBMS_LOCK.SLEEP он все еще находится в пути кода и все еще «работает». Просто не делаю ничего полезного.

PS. Не уверен, как PID работает в Windows, которая работает как потоки внутри одного процесса, а не как несколько отдельных процессов.

...