Comment répertorier les connexions actives / ouvertes dans Oracle?


164

Y a-t-il une table cachée, une variable système ou quelque chose pour montrer les connexions actives à un moment donné?

Réponses:


183

Utilisez la V$SESSIONvue.

V$SESSION affiche les informations de session pour chaque session en cours.


5
Erreur de démarrage à la ligne 1 dans la commande: sélectionnez * à partir de FROM v $ session Erreur sur la ligne de commande: 1 Colonne: 14 Rapport d'erreur: SQL Erreur: ORA-00903: nom de table non valide 00903. 00000 - "nom de table non valide" * Cause: * Action:
pistacchio

3
Soit vous ne disposez pas des autorisations, soit vous n'avez pas installé correctement les vues DBA.
S.Lott

4
Vous aurez besoin du rôle select_catalog_role.
PaulJWilliams

2
Vous pouvez également rejoindre v $ sqltext pour obtenir le SQL actuel des sessions.
Alkini

27
pistacchio, vous avez 2 "from FROM" dans le SQL: "select * from v $ session"
marcprux

116

Pour une réponse plus complète, voir: 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

Lorsque je souhaite afficher les connexions entrantes de nos serveurs d'applications à la base de données, j'utilise la commande suivante:

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

Simple mais 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

Cette requête tente de filtrer tous les processus d'arrière-plan.


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
Bienvenue à SO! Veuillez fournir une certaine intuition pour vos réponses.
vefthym


4

Ce qui suit vous donne la liste des utilisateurs du système d'exploitation triés par nombre de connexions, ce qui est utile lorsque vous recherchez une utilisation excessive des ressources.

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
Bien que cet extrait de code puisse résoudre la question, inclure une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question aux lecteurs à l'avenir, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
DimaSan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.