Image

Category:

oracle.удаление зависших сессий

получаем информацию о сессиях
select * from v$session where username = '<user>';

находим sid интересующей нас сесии

по sql_id,prevsql_id можно посмотреть что выполняется
select * from v$sql where sql_id='<sql_id>';

ненужную сессию можно отключить использовав команду
alter system kill session '<sid>,<serial#>';

блокировки можно посмотреть в select * from v$lock;

это не всегда помогает, иногда требуется убить dedicated процесс отвечающий за данную сессию на стороне сервера. получаем процесс по sid

SELECT p.spid, p.program, s.program, s.terminal, s.status
FROM v$process p, v$session s
WHERE p.addr = s.paddr and s.sid=<sid>;

после этого kill -9 <spid>

и проверяем через v$lock что блокировок на данной сесии нет

http://www.orafaq.com/node/854
http://www.oracle.com/global/ru/oramag/janfeb2004/easy_kill_session.html