Тайм-аут JDBC с Oracle DB

Можно ли узнать, какой запрос выполнялся / ожидал в Oracle db, когда для сеанса был выдан тайм-аут JDBC?

Я проверил сеансы и вижу P2TEXT = 'interrupt' и P3TEXT = 'timeout' и wait_class = 'System I / O', но sql_id пуст, а p2 равен 0.

Заранее спасибо.


person user1140840    schedule 19.05.2017    source источник


Ответы (1)


Используйте данные Active Session History (ASH), чтобы узнать, что и когда выполнялось.

Данные по ASH основаны на выборке. Не ожидайте найти точный запрос с точностью до миллисекунды. Но если есть проблема с производительностью, он должен выделяться в таком запросе:

select username, sample_time, sql_id
from gv$active_session_history
join dba_users
    on gv$active_session_history.user_id = dba_users.user_id
where sample_time between timestamp '2017-05-20 09:00:00' and timestamp '2017-05-21 09:05:00'
order by sample_time desc;

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

person Jon Heller    schedule 21.05.2017