Магические команды для нахождения заблокировавшихся/зависших/взаимно заблокировавшихся запросов/сессий/транзакций в Oracle:
1 2 3 4 |
select machine, l.name, s.SQL_ID, a.sql_text, s.*, l.*, a.* from v$session s, dba_dml_locks l, v$sqlarea a where s.sid = l.session_id and s.SQL_ID = a.SQL_ID |
А с помощью этого запроса можно узнать фактические параметры зависшего параметризованного запроса:
1 2 3 4 5 6 7 8 9 |
SELECT sql_id, t.sql_text sql_text, b.name bind_name, b.value_string bind_value FROM v$sql t JOIN v$sql_bind_capture b using (sql_id) WHERE b.value_string is not null AND sql_id = ‘1bvhwhm0b9zv2’; |
—