Um festzustellen, ob ein Trigger (sowie jede andere gespeicherte Prozedur) gesperrt ist oder nicht, wird der V$ACCESS dynamische Leistungsansicht kann abgefragt werden.
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
Diese Art von Schlössern sind Bibliotheks-Cache-Pins (Bibliotheks-Cache-Sperren sind Ressourcen (TM
Art der Sperre) Sperren), die benötigt werden, um sicherzustellen, dass ein Objekt vor Änderungen geschützt ist, während die Sitzung es ausführt.
--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'
Ergebnis:
Sid Username Event
--------------------------
24 HR library cache pin
....
441 HR log file switch (checkpoint incomplete)
Hier können wir sehen, dass Sitzung Nr. 441 auf einen Wechsel der Protokolldatei wartet und Sitzung Nr. 24 auf Bibliotheks-Cache-Pin wartet.