Como listar conexões ativas / abertas no Oracle?


164

Existe alguma tabela oculta, variável de sistema ou algo para mostrar conexões ativas em um determinado momento?

Respostas:


183

Use a V$SESSIONvista.

V$SESSION exibe informações da sessão para cada sessão atual.


5
Erro ao iniciar na linha 1 no comando: selecione * de FROM v $ session Erro na linha de comando: 1 Coluna: 14 Relatório de erro: Erro SQL: ORA-00903: nome de tabela inválido 00903. 00000 - "nome de tabela inválido" * Causa: * Ação:
pistacchio

3
Você não tem permissões ou não instalou as visualizações do DBA corretamente.
24510 S.Lott

4
Você precisará da função select_catalog_role.
22415 PaulJWilliams

2
Você pode associar v $ sqltext para obter o SQL atual das sessões também.
Alkini

27
pistacchio, você tem 2 "DE" no SQL: "SELECT * FROM v $ session"
marcprux

116

Para uma resposta mais completa, consulte: http://dbaforums.org/oracle/index.php?showtopic=16834

select
       substr(a.spid,1,9) pid,
       substr(b.sid,1,5) sid,
       substr(b.serial#,1,5) ser#,
       substr(b.machine,1,6) box,
       substr(b.username,1,10) username,
--       b.server,
       substr(b.osuser,1,8) os_user,
       substr(b.program,1,30) program
from v$session b, v$process a
where
b.paddr = a.addr
and type='USER'
order by spid; 

28

Quando eu gostaria de visualizar as conexões de entrada de nossos servidores de aplicativos no banco de dados, utilizo o seguinte comando:

SELECT username FROM v$session 
WHERE username IS NOT NULL 
ORDER BY username ASC;

Simples mas efetivo.


6
select s.sid as "Sid", s.serial# as "Serial#", nvl(s.username, ' ') as "Username", s.machine as "Machine", s.schemaname as "Schema name", s.logon_time as "Login time", s.program as "Program", s.osuser as "Os user", s.status as "Status", nvl(s.process, ' ') as "OS Process id"
from v$session s
where nvl(s.username, 'a') not like 'a' and status like 'ACTIVE'
order by 1,2

Esta consulta tenta filtrar todos os processos em segundo plano.


5
Select count(1) From V$session
where status='ACTIVE'
/

5
select
  username,
  osuser,
  terminal,
  utl_inaddr.get_host_address(terminal) IP_ADDRESS
from
  v$session
where
  username is not null
order by
  username,
  osuser;

4
Bem-vindo ao SO! Forneça alguma intuição para suas respostas.
vefthym


4

A seguir, é apresentada uma lista de usuários do sistema operacional classificados por número de conexões, o que é útil ao procurar uso excessivo de recursos.

select osuser, count(*) as active_conn_count 
from v$session 
group by osuser 
order by active_conn_count desc

1
select 
    count(1) "NO. Of DB Users", 
    to_char(sysdate,'DD-MON-YYYY:HH24:MI:SS') sys_time
from 
    v$session 
where 
    username is NOT  NULL;

1
Embora esse trecho de código possa resolver a questão, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código.
DimaSan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.