Come elencare le connessioni attive / aperte in Oracle?


164

C'è qualche tabella nascosta, variabile di sistema o qualcosa per mostrare le connessioni attive in un dato momento?

Risposte:


183

Usa la V$SESSIONvista

V$SESSION visualizza le informazioni sulla sessione per ogni sessione corrente.


5
Errore a partire dalla riga 1 nel comando: selezionare * da FROM v $ session Errore nella riga di comando: 1 Colonna: 14 Rapporto errori: SQL Errore: ORA-00903: nome tabella non valido 00903. 00000 - "nome tabella non valido" * Causa: * Azione:
pistacchio,

3
O non disponi delle autorizzazioni o non hai installato correttamente le viste DBA.
S.Lott

4
Avrai bisogno del ruolo select_catalog_role.
PaulJWilliams,

2
È possibile unire v $ sqltext per ottenere anche l'SQL corrente delle sessioni.
Alkini,

27
pistacchio, hai 2 "da FROM"
nell'SQL

116

Per una risposta più completa consultare: 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 desidero visualizzare le connessioni in entrata dai nostri server delle applicazioni al database, utilizzo il seguente comando:

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

Semplice ma efficace.


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

Questa query tenta di filtrare tutti i processi in background.


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
Benvenuti in SO! Fornisci alcune intuizioni per le tue risposte.
Vefthym,


4

Di seguito è riportato un elenco di utenti del sistema operativo ordinati per numero di connessioni, utile quando si cerca un uso eccessivo delle risorse.

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
Mentre questo frammento di codice può risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro e quelle persone potrebbero non conoscere i motivi del tuo suggerimento sul codice.
DimaSan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.