Como identificar quais sessões estão ativas no ORACLE e como eliminá-las.

Dando continuidade à sessão ORACLE DATABASE postarei mais uma sacada rápida, porém funcional, que é uma consulta  que te mostra quais as sessões ativas no Oracle e como eliminar estas sessões.

Normalmente esta necessidade surge quando:

  • Sua equipe de desenvolvimento está utilizando uma base ( seja de produção / Homologação / Desenvolvimento ). Isto pode acontecer, por exemplo, quando alguma instrução que acessa o banco não fecha a conexão após obter a informação desejada. Assim, com a conexão aberta pode gerar um número desnecessários de sessões ativas.
  • Outra necessidade é quando você precisa parar processos/ jobs que estão sendo executados na base de dados e que, por algum motivo, precisam ser paradas abruptamente.

Assim, toda vez que você quiser identificar os usuários (sessões) que estão ativos ( conectados em seu banco) você pode utilizar a consulta ( como ela está, sem alterações) abaixo :

SELECT s.username,
s.osuser,
s.sid,
s.serial#,
p.spid,
s.status,
s.machine,
s.program,
TO_CHAR(s.logon_Time,’DD-MON-YYYY HH24:MI:SS’) AS logon_time
FROM v$session s
inner join v$process p
on s.paddr = p.addr
WHERE s.status = ‘ACTIVE’
and s.type <> ‘BACKGROUND’

Percebendo que o número de usuários conectados está elevado e após analisar os acessos perceber quem está ou não utilizando a sessão, você pode “derrubá-los” executando o script abaixo:

ALTER SYSTEM KILL SESSION ‘sid,serial#’ IMMEDIATE;

É isso ai pessoal, espero ter ajudado.

Dúvidas, entre em contato.

Forte abraço.

Eduardo Santana
bufallos@bufallos.com.br

Leave a Reply

Your email address will not be published. Required fields are marked *