Вы могли бы быть в состоянии найти информацию о хронологической блокировке в репозитории активной рабочей нагрузки (AWR). Этот запрос может быть полезен:
--Blocked sessions for the past two months.
select *
from dba_hist_active_sess_history
where blocking_session is not null
and sample_time > sysdate - interval '2' month
order by sample_time desc;
Однако AWR доступен только в Enterprise Edition, если он лицензирован. И по умолчанию он настроен на предоставление информации только в течение 8 дней.
Вы можете исследовать и увеличить срок хранения AWR с помощью приведенного ниже кода. Но имейте в виду, что для хранения дополнительных данных потребуется дополнительное пространство в табличном пространстве SYSAUX:
--Find how long AWR retains this information.
select dbid, retention from dba_hist_wr_control;
--If necessary, change the retention period to 62 days (62*24*60).
begin
dbms_workload_repository.modify_snapshot_settings(retention => 89280);
end;
/
Кроме того, эта информация поможет устранить неполадки только некоторых типов блокировок. AWR использует выборку и будет отлавливать только то, что ожидает блокировки (в среднем) более 10 секунд. Некоторые блокировки, например пробелы, могут сразу перестать работать, если параметр RESUMABLE_TIMEOUT
отключен.
Кроме того, представление DBA_HIST_ACTIVE_SESS_HISTORY
не сообщает вам, был ли сеанс блокировки активным или нет. Но эта точка зрения может стать хорошей отправной точкой для расследования.