Это может быть хорошим использованием пакета DBMS_LOCK.DBMS_LOCK позволяет вам получить доступ к той же модели постановки / блокировки, которая используется Oracle для внутреннего использования.
Вы можете установить постановку в очередь, и тогда несколько процессов могут принять эту постановку в очередь в различных режимах блокировки.Блокировки будут отображаться, как и любая другая очередь, с типом «UL» (для блокировки пользователя).
Например, предположим, что у вас есть три процесса, которые могут работать одновременно, но затем у вас есть процесс, который должен ждатьдля всех трех из этих процессов, которые должны быть запущены сами по себе, а затем следуют еще два процесса, которые могут запускаться одновременно после завершения этого процесса.
Первые три процесса могут получить очередь UL.в режиме 'S' (общий), и все они смогут работать одновременно.Затем запустите процесс, который должен быть запущен сам по себе, но в начале кода сделайте так, чтобы он принял очередь UL в режиме «X» (эксклюзив).Этот процесс будет ожидать завершения трех процессов, содержащих очередь в режиме совместного использования.Теперь вы также можете запустить два последних процесса снова в режиме совместного использования.Они будут стоять в очереди за процессом, который запрашивает эксклюзивные блокировки режима, и все работает в нужном вам порядке.
Это простой пример.С более чем одной блокировкой типа UL и несколькими режимами, в которых можно удерживать блокировки, ваши процессы и стратегия блокировки могут быть произвольно сложными.
Надеюсь, это поможет.