DBAtlas · Атлас эксплуатации баз данных

Найти блокирующую сессию

OracleСессии и процессы

Команда

SELECT bl.sid       AS blocker_sid,
       bl.serial#   AS blocker_serial,
       bl.username  AS blocker_user,
       w.sid        AS waiter_sid,
       w.serial#    AS waiter_serial,
       w.username   AS waiter_user,
       w.seconds_in_wait AS wait_sec,
       w.event
FROM   v$session w
  JOIN v$session bl ON bl.sid = w.blocking_session
WHERE  w.blocking_session IS NOT NULL
ORDER BY w.seconds_in_wait DESC;

Что делает

Выводит пары блокирующих и ожидающих сессий со временем ожидания и событием.

Когда использовать

Чтобы найти виновника при проблемах с блокировками вроде «приложение зависло / ожидание enq: TX».

Внимание

Перед завершением блокирующей сессии согласуйте с владельцем бизнес-процесса; это может быть критичная операция. Только запрос; риска нет.

Открыть в DBAtlas →

Связанные материалы