Dans le système de gestion de base de données DM (DM Database), la procédure stockée SP_CLOSE_SESSION est l'outil principal pour interrompre des sessions actives.
Identifier et Terminer une Session
Pour gérer efficacement les sessions, vous devez d'abord être capable de les identifier, puis de les terminer.
1. Visualisation des Sessions Actives
Pour obtenir une liste des sessions en cours d'exécution, connectez-vous à votre instance DM et exécutez une requête sur la vue système V$SESSION. Cette vue fournit des informations cruciales sur chaque session.
SELECT
SESS_ID, -- Identifiant unique de la session
STATE, -- État actuel de la session (ex: ACTIVE, IDLE)
USER_NAME -- Nom de l'utilisateur associé à la session
FROM
V$SESSION;
La sortie de cette requête vous présentera un aperçu de toutes les sessions connectées, y compris leur identifiant (SESS_ID), leur état et l'utilisateur qui l'a initiée. Notez attentivement le SESS_ID de la session que vous souhaitez fermer.
2. Procédure de Fermeture de Session
Une fois l'identifiant de session obtenu, vous pouvez utiliser la procédure stockée SP_CLOSE_SESSION. La syntaxe est la suivante :
EXEC SP_CLOSE_SESSION(<id_session_>);
</id_session_>
Remplacez <ID_SESSION_À_TERMINER> par le SESS_ID que vous avez identifié précédemment.
Exemple Pratique
Supposons que vous souhaitiez terminer une session spécifique.
Étape 1 : Lister les sessions
SQL> SELECT SESS_ID, STATE, USER_NAME FROM V$SESSION;
SESS_ID STATE USER_NAME
-------------------- ----------- ---------
140712591173448 IDLE SYSDBA
140712523931528 ACTIVE SYSDBA
Ici, nous avons identifié la session avec SESS_ID = 140712523931528 comme cible.
Étape 2 : Exécuter la commande de fermeture
SQL> EXEC SP_CLOSE_SESSION(140712523931528);
Si l'opération réussit, vous recevrez une confirmation.
Vérification après fermeture :
SQL> SELECT SESS_ID, STATE, USER_NAME FROM V$SESSION;
SESS_ID STATE USER_NAME
-------------------- ----------- ---------
140712591173448 IDLE SYSDBA
Comme vous pouvez le constater, la session précédemment identifiée n'apparaît plus dans la liste.
Comportement en cas de reconnexion :
Il est important de noter que si le client associé à une session fermée tente d'exécuter une nouvelle requête, la base de données DM peut automatiquement établir une nouvelle session pour cette connexion. Le journal des sessions reflétera alors une nouvelle entrée avec un SESS_ID différent et un horodatage de création mis à jour.
-- Après la fermeture, si le client 'TEST' ré-exécute une requête :
SQL> -- (Une nouvelle session est créée automatiquement)
SQL> SELECT SESS_ID, STATE, USER_NAME, CREATE_TIME FROM V$SESSION;
SESS_ID STATE USER_NAME CREATE_TIME
-------------------- ----------- ------------------- --------------------------
139773872320856 ACTIVE SYSDBA 2025-05-28 06:20:49.000000
138850040 IDLE TEST 2025-05-28 06:31:12.000000
Considérations Importantes
- Permissions : Seuls les utilisateurs disposant des privilèges administratifs appropriés peuvent exécuter
SP_CLOSE_SESSION. - Impact sur les Transactions : La fermeture forcée d'une session peut entraîner l'annulation (rollback) des transactions non validées en cours. Évaluez attentivement les conséquences potentielles sur l'intégrité des données avant de procéder.
- Journalisation : Il est recommandé de consigner toutes les opérations de gestion de sessions, y compris les fermetures, à des fins d'audit et de dépannage.
- Concurrence : Soyez conscient que la terminaison de sessions peut affecter la performance globale du système, en particulier sous une charge de travail élevée.