L’installation d’un serveur Oracle définit un nombre maximal de processus à accepter pour ne pas saturer le SGBD et on peut arriver à cette limite lorsqu’un nombre important d’utilisateurs se connecte simultanément aux BDD. Pour connaitre quelle base est concernée, quel logiciel métier ouvre trop de sessions ou quel développeur n’a pas fermé ses connexions ou a mal codé son script, voici comment lister toutes les sessions ouvertes sur les bases de données hébergées sur un serveur Oracle au moyen d’une requête à exécuter en SQLPlus ou via SQL Developer. Cette information peut aussi être disponible via la console web Oracle Enterprise Manager (OEM ou EM).

Ces requêtes sont compatibles avec les différentes versions du SGBDR Oracle : 9i, 10g, 11g, 12c (à chaque fois dans les mises à jour R1 et R2).

 

Liste simple des connexions à un serveur Oracle

Cette commande va simplement lister les bases ouvertes par session :

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

Résultat par SQL Plus :

tutoriel Oracle SQL Plus voir sessions

Résultat par Oracle SQL Developer :

tutoriel Oracle SQL Developer voir sessions

 

Liste détaillée des connexions à un serveur Oracle

Pour avoir plus d’informations, comme connaitre le programme qui est connecté ou quel serveur / poste de travail travaille actuellement sur une base, ce script va donner des détails sur les sessions en cours sur le SGBD Oracle.

select
 substr(a.spid,1,9) pid,
 substr(b.sid,1,5) sid,
 substr(b.serial#,1,5) ser#,
 substr(b.machine,1,15) box,
 substr(b.username,1,10) username,
-- b.server,
 substr(b.osuser,1,15) 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 username;

Résultat par SQL Plus :

tutoriel Oracle SQL Plus voir sessions

Résultat par Oracle SQL Developer :

tutoriel Oracle SQL Developer voir sessions

Ce résultat est beaucoup plus détaillé, plus facile à lire avec SQL Developper et indique les informations suivantes :

  • BOX : nom de la machine (hostname) qui a établi la session
  • USERNAME : nom de l’utilisateur connecté (user Oracle)
  • OS_USER : profil du système (login Windows par exemple)
  • PROGRAM : logiciel ou outil utilisé par la connexion

Dans les programmes, on peut retrouver sqlplus.exe (SQL Plus), Oracle SQL Developer, JDBC Thin Client (application Java)…