Para determinar si un activador (así como cualquier otro procedimiento almacenado) está bloqueado o no, V$ACCESO se puede consultar la vista de rendimiento dinámico.
Session #1
insert into test_trigger
select level
from dual
connect by level <= 1000000;
Session #2
SQL> select *
2 from v$access
3 where object = upper('test_trigger_t')
4 ;
Sid Owner Object Type Con_Id
--------------------------------------
441 HR TEST_TRIGGER_T TRIGGER 3
Ese tipo de bloqueos son pines de caché de biblioteca (los bloqueos de caché de biblioteca son recursos (TM
tipo de bloqueo) bloqueos), necesarios para garantizar que un objeto esté protegido contra modificaciones mientras la sesión lo ejecuta.
--session sid # 441
insert into test_trigger
select level
from dual
connect by level <= 1000000;
-- session sid #24
create or replace trigger test_trigger_t
after insert on test_trigger for each row
begin
insert into test_trigger_h (id) values (:new.id);
end;
-- Session # 3
select vs.sid
, vs.username
, vw.event
from v$session vs
join v$session_wait vw
on (vw.sid = vs.sid)
join v$access va
on (va.owner = vs.username)
where vs.username = 'HR'
Resultado:
Sid Username Event
--------------------------
24 HR library cache pin
....
441 HR log file switch (checkpoint incomplete)
Aquí podemos ver que la sesión n.º 441 espera un cambio de archivo de registro y la sesión n.º 24 espera un pin de caché de biblioteca.