Нам необходимо убедиться, что в Oracle работает только одна копия определенной процедуры. Если он уже запущен, и пользователь пытается открыть другого, это должно привести к ошибке.
Какой лучший способ сделать это?
oracle
oracle-11g-r2
locking
plsql
rfusca
источник
источник
Когда у моих клиентов появляется запрос с уникальной бизнес-логикой, такой как этот, я пытаюсь перевернуть вопрос и спросить, зачем это нужно.
Лучший способ убедиться, что запущена только одна копия, - не дать пользователям вообще выполнить процедуру. Если эта процедура настолько особенная, то ее использование должно быть ограничено dba / developers.
Другой способ - запустить эту процедуру только как задание. Добавьте проверку в процедуру, чтобы увидеть, выполняются ли какие-либо задания, вызывающие это. Если это так, остановите дальнейшую обработку и зарегистрируйте вхождение.
источник