• Categoría: Oracle
  • Visto: 21577

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Oracle

En muchas ocasiones tenemos la necesidad de matar una o varias sesiones de un usuario en una base de datos Oracle, las sesiones de usuario las tenemos que matar desde Oracle y no desde el Sistema Operativo, a veces podemos realizarlo desde el Sistema Operativo si no lograr ser eliminadas desde Oracle.

 

Lo primero que vamos a hacer es identificar la sesión de usuario que queremos que matar, para ello utilizamos la siguiente Query:

 


SQL> select a.USERNAME, a.SID, a.SERIAL#, b.SPID
from v$session a, v$process  b
where a.PADDR= b.ADDR order by 1;


La salida será algo parecido ha esto:

 


USERNAME    SID  SERIAL# SPID
----------- ---- ------- ------
TUUSUARIO_1  108    3917  56061
TUUSUARIO_2  158      58  51062
TUUSUARIO_3   41    4647  14649


 

Esta Select nos devuelve el nombre de usuario, el número de proceso Oracle, el número serial del proceso Oracle y el PID del proceso Oracle en el Sistema Operativo.

 

Una vez tengamos identificada la sesión que queremos matar utilizamos la siguiente instrucción desde SqlPlus.

 


SQL> ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

 

Ejemplo:

 


SQL> ALTER SYSTEM KILL SESSION '108, 3917';

 

Es posible que la sesión no muera de forma inmediata ya que puede que se este realizando alguna transacción, esto dependerá de lo que estuviera realizando el usuario.

 

A veces puede ocurrir que la sesión nunca muera por que se haya quedado zombi, en ese caso tendremos que matarla desde el promt del Sistema Operativo, para ello utilizaremos el PID que tenemos en la columna SPID.

 

Ejemplo para Unix/Linux

 


$kill -9 56061