Temos a necessidade de garantir que apenas uma cópia de um procedimento específico esteja em execução no Oracle. Se já estiver em execução e um usuário tentar abrir outro, deverá ocorrer um erro.
Qual é o melhor método para fazer isso?
oracle
oracle-11g-r2
locking
plsql
rfusca
fonte
fonte
Quando meus clientes têm uma solicitação que possui uma lógica comercial única como essa, tento mudar a questão e perguntar por que isso é necessário.
A melhor maneira de garantir que apenas uma cópia esteja em execução é não permitir que os usuários executem o procedimento. Se esse procedimento é tão especial, seu uso deve ser restrito ao dba / developers.
Outra maneira é executar este procedimento apenas como um trabalho. Adicione uma verificação no procedimento para ver se algum trabalho chamando isso está em execução. Se estiverem, pare o processamento e registre a ocorrência.
fonte