Blog

Blog

Killer une session quel que soit l'OS

Hé oui, ça peut paraître bête, mais j'ai tellement l'habitude de killer les sessions qui m'embêtent sous Unix que je me suis retrouvée comme une conne sous MS-DOS!

Recherche de la session à killer

Cette partie est la même quel que soit l'OS.
Il suffit de jouer cette requête :
SET LINESIZE 100
COLUMN spid FORMAT A10
COLUMN username FORMAT A10
COLUMN program FORMAT A45

SELECT s.inst_id,
       s.sid,
       s.serial#,
       p.spid,
       s.username,
       s.program
FROM   gv$session s
       JOIN gv$process p ON p.addr = s.paddr 
                        AND p.inst_id = s.inst_id
WHERE  s.type != 'BACKGROUND';
Le résultat sera de ce genre :

   INST_ID        SID    SERIAL# SPID       USERNAME   PROGRAM 
---------- ---------- ---------- ---------- ---------- --------------------------------------------- 
         1        150         17 6116       DBSNMP     emagent.exe 
         1         92        120 1384       XXX        SQL Developer 
         1         16         68 6104       DBSNMP     emagent.exe 
         1         32        105 4616       SYS        sqlplus.exe 
         1        124         22 5684       DBSNMP     emagent.exe 

Killer la session

Toujours sous sqlplus, vous pouvez alors killer cette session. La syntaxe est :
ALTER SYSTEM KILL SESSION 'sid,serial#';
Ce qui dans mon exemple donne :
ALTER SYSTEM KILL SESSION '92,120';

SystÞme modifiÚ.
Oui, la console sous MS-DOS affiche toujours des caractères bizarres, mais Oracle n'a visiblement pas l'intention de le corriger.

Pour aller plus loin

Voici le livre Oracle avec la syntaxe du ALTER SESSION : http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_2013.htm#i2231814