Première étape : Qui est actuellement connecté ?
En étant connecté avec un utilisateur ayant suffisamment de droits, il est possible de voir les sessions actuellement ouvertes de la base de données:
SELECT SID, SERIAL#, USERNAME, STATUS FROM V$SESSION;
Exemple :
Si l’Enterprise Manager du serveur est ouvert, alors la requête précédente peut fort probablement y afficher plusieurs usagers SYSMAN OU DBNSMP. Le cas échéant, l’idéal serait de fermer le service Windows OracleDBConsoleXXX pour ceux qui cherchent à fermer complètement le serveur Oracle.
Deuxième étape : Déconnexion des usagers
Pour déconnecter un usager, il faut exécuter une requête comme celle-ci:
ALTER SYSTEM DISCONNECT SESSION '150,17' IMMEDIATE ;(où le 150,17 correspond à SID et SERIAL#)
Il est possible de déconnecter une session après sa transaction (s’il y a lieu). Dans ce cas, il faut changer IMMEDIATE par POST_TRANSACTION.
Il n’est pas nécessaire de déconnecter les sessions sans USERNAME pour une fermeture en mode NORMAL de la base de données.
Merci pour ces informations qui je viens de mettre en application!
Merci pour ces infos et en cadeau la requête qui permet de construire directement les ALTER en fontion du USERNAME :
SELECT 'ALTER SYSTEM DISCONNECT SESSION '''|| SID ||','|| SERIAL# ||''' IMMEDIATE;' FROM V$SESSION where username='<USERNAME>';
salut je voudrais savoir comment faire pour supprimer plusieurs session a la fois sans mettre les sid de chaque session