¿Cómo enumerar conexiones activas / abiertas en Oracle?

164

¿Hay alguna tabla oculta, variable de sistema o algo para mostrar conexiones activas en un momento dado?

pistacho
fuente

Respuestas:

183

Usa la V$SESSIONvista.

V$SESSION muestra información de sesión para cada sesión actual.

PaulJWilliams
fuente
55
Error al comenzar en la línea 1 en el comando: seleccione * de FROM v $ sesión Error en la línea de comando: 1 Columna: 14 Informe de error: Error de SQL: ORA-00903: nombre de tabla no válido 00903. 00000 - "nombre de tabla no válido" * Causa: * Acción:
pistacchio
3
O no tiene permisos o no instaló las vistas de DBA correctamente.
S.Lott
44
Necesitará el rol select_catalog_role.
PaulJWilliams
2
Puede unirse a v $ sqltext para obtener el SQL actual de las sesiones también.
Alkini
27
pistacchio, tiene 2 "from FROM" en el SQL: "select * from FROM v $ session"
marcprux
116

Para obtener una respuesta más 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; 
ehrhardt
fuente
28

Cuando me gustaría ver las conexiones entrantes de nuestros servidores de aplicaciones a la base de datos, uso el siguiente comando:

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

Simple, pero efectivo.

usuario2021477
fuente
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 intenta filtrar todos los procesos en segundo plano.

Alan
fuente
5
Select count(1) From V$session
where status='ACTIVE'
/
Juber
fuente
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;
usuario3848789
fuente
44
Bienvenido a SO! Proporcione cierta intuición para sus respuestas.
vefthym
4
select status, count(1) as connectionCount from V$SESSION group by status;
Fletch F Fletch
fuente
4

A continuación, se incluye una lista de usuarios del sistema operativo ordenados por número de conexiones, lo cual es útil cuando se busca un uso excesivo de recursos.

select osuser, count(*) as active_conn_count 
from v$session 
group by osuser 
order by active_conn_count desc
jediz
fuente
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;
kirankumar M
fuente
1
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
DimaSan