Есть ли лучший способ избежать повторного выполнения процесса в Oracle?

Допустим, у меня есть процедурас именем myproc. Это сложный процесс, и я не могу допустить, чтобы два экземпляра выполняли его одновременно.

На самом деле я делаю это с помощью dbms_application_info.set_module:

procedure start_process is
begin
  dbms_application_info.set_module('myproc', 'running');
end;

и проверяю перед запуском процесса:

select 'S'
  from v$session v
 where v.module = 'myproc'
   and v.action = 'running';

Есть ли лучший способ проверить это на уровне базы данных?

14
задан skaffman 22 March 2012 в 15:08
поделиться