Páginas

terça-feira, 5 de julho de 2011

Oracle Kill Session

Um método alternativo ao famoso "ALTER SYSTEM KILL SESSION" é o uso do commando Disconnect, que é praticamente o equivalente a matar o processo diretamente no sistema operacional. A sintaxe é igual ao "kill" tradicional, adicionando a cláusula POST_TRANSACTIONAL (aguarda o término da transação) ou IMMEDIATE ao final.

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;
SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;

Se mesmo assim a sessão ficar presa, é necessário matá-la a nível de sistema operacioanal. Para encontrar o número do processo, precisamos da v$process. Como geralmente as informações que temos é sobre a sessão, precisamos fazer um join entre a v$session e a v$process. No exemplo abaixo, procuramos todos os processos das sessões do USUARIO.

select 'kill -9 '||spid from v$session s,v$process p where s.paddr=p.addr and s.username='USUARIO';

Nenhum comentário:

Postar um comentário