Verwenden Sie diese Abfrage das letzte Mal finden eine Sitzung gesperrt wurde für den Zugriff auf eine bestimmte Tabelle warten:
select max(sample_time) last_block_time
from gv$active_session_history
--Or use this table for further back.
--from dba_hist_active_sess_history
where blocking_session is not null
and current_obj# =
(
select object_id
from dba_objects
where owner = 'JHELLER' --Enter the object owner here.
and object_name = 'TEST1' --Enter the object name here.
);
Dies ist nicht unbedingt dasselbe wie „wann war das letzte Mal, wenn die Tabelle gesperrt wurde“ . Es ist möglich, dass die Tabelle oder eine Zeile in der Tabelle gesperrt wurde, aber keine Sitzungen darauf gewartet haben. Und es ist möglich, dass eine Sitzung darauf gewartet hat, aber nicht während der Probe.
Wenn jedoch etwas nicht oft genug geschieht, um in den Sitzungsverlaufstabellen angezeigt zu werden, ist es normalerweise nicht wichtig genug, um sich Sorgen zu machen.
Ihre Abfrage bringt mir einige unerwartete Ergebnisse. Es gibt 10 verschiedene Sessions, die SESSION_TYPE = 'FOREGROUND', EVENT = 'Protokolldateisynchronisation', SESSION_STATE = 'WAITING' und BLOCKING_SESSION = 465 haben. Ich versuche diese blocking_session in v $ Session zu finden, aber es gibt keine Session. Also kann ich die Blockierungssitzung noch nicht bestimmen – Jdzel