Gestion des sessions dans la base de données DM : Terminaison

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.

Étiquettes: DM Database gestion de sessions SQL SP_CLOSE_SESSION V$SESSION

Publié le 27 septembre à 02h07