Hola, tengo un servidor con Linux y Oracle 11g, necesito un procedimiento SQL que me permita matar (cerrar) una sesión ¿eso es posible? ¿cómo puedo listar las sesiones abiertas?
Publicado:
Mar Ago 26, 2014 11:19 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Matar cerrar sesión en Oracle
Anuncios
La siguiente consulta SQL te devolverá todas las sesiones y los datos de las sesiones actuales de conexión a Oracle:
Código:
SELECT s.USERNAME, s.SID, s.SERIAL#, s.SPID, s.OSUSER, s.MACHINE, s.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
ORDER by 1;
La consulta SQL anterior devuelve datos tan interesantes como el nombre del usuario del sistema operativo, el nombre de la máquina (PC) que inició sesión, el nombre de la aplicación, etc. Los datos importantes que necesitaremos para matar (cerrar) una sesión serán el SID y el SERIAL.
La consulta SQL para matar una sesión Oracle sería:
Código:
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
Teniendo en cuenta los valores de la primera consulta SQL, si queremos cerrar la sesión con SID 125 y SERIAL 5002, la consulta SQL sería:
Código:
ALTER SYSTEM KILL SESSION '125, 5002';
El inconveniente de la consulta anterior es que Oracle esperará a que el proceso responda y haya finalizado la transacción en curso, si el proceso está "colgado" nunca se detendrá.
Publicado:
Mar Ago 26, 2014 5:10 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: Re: Matar cerrar sesión en Oracle
Anuncios
alonsojpd escribió:
Código:
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
Ok, gracias por la información.
En caso de que no se cierre la sesión con ALTER SYSTEM KILL SESSION ¿qué puedo hacer para cerrarla o matarla?
Publicado:
Mie Ago 27, 2014 4:11 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Matar cerrar sesión en Oracle
Anuncios
varios escribió:
Ok, gracias por la información.
En caso de que no se cierre la sesión con ALTER SYSTEM KILL SESSION ¿qué puedo hacer para cerrarla o matarla?
En ese caso puedes usar la clausula IMMEDIATE, algo así:
Código:
ALTER SYSTEM KILL SESSION 'SID, SERIAL#' IMMEDIATE;
Publicado:
Mie Ago 27, 2014 4:15 am
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: Re: Matar cerrar sesión en Oracle
Anuncios
alonsojpd escribió:
Código:
ALTER SYSTEM KILL SESSION 'SID, SERIAL#' IMMEDIATE;
Con IMMEDIATE se me cierran algunas sesiones que antes no se cerraban pero aún tengo otras que no se cierran ni con IMMEDIATE, ya no sé qué hacer!! no puedo reiniciar el servidor de la base de datos por cuestiones de disponibilidad y no sé cómo matar estas sesiones que tienen bloqueada una tabla importante de la aplicación de Facturación y Contabilidad.
Publicado:
Mie Ago 27, 2014 4:18 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Matar cerrar sesión en Oracle
Anuncios
varios escribió:
Con IMMEDIATE se me cierran algunas sesiones que antes no se cerraban pero aún tengo otras que no se cierran ni con IMMEDIATE, ya no sé qué hacer!! no puedo reiniciar el servidor de la base de datos por cuestiones de disponibilidad y no sé cómo matar estas sesiones que tienen bloqueada una tabla importante de la aplicación de Facturación y Contabilidad.
En ese caso puedes matar las sesiones Oracle desde la línea de comandos (shell) de MS-DOS (en el caso de equipo servidor Oracle con Windows), con el comando:
Código:
orakill ORACLE_SID spid
Donde sustituirás "ORACLE_SID" por el SID de tu base de datos (el identificativo que le diste al crear la instancia Oracle) y spid es el valor que te devuelve la cuarta columna de la consulta SQL:
Código:
SELECT s.USERNAME, s.SID, s.SERIAL#, s.SPID, s.OSUSER, s.MACHINE, s.PROGRAM
FROM v$session s, v$process p
WHERE s.PADDR = p.ADDR
ORDER by 1;
Para el caso de sevidor Oracle con Linux puedes usar el comando:
Código:
kill -9 spid
Siendo como ya hemos dicho el spid el el valor que te devuelve la cuarta columna de la consulta SQL.
En Linux puedes ver si la sesión se ha cerrado pues se corresponde con un proceso con el comando:
Código:
ps -ef | grep ora
Publicado:
Mie Ago 27, 2014 4:21 am
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO] Matar cerrar sesión en Oracle
Anuncios
Muchísimas gracias, resuelto con el comando kill de Linux e introduciendo el SPID de la consulta SQL. Ahora la tabla se me desbloqueó y las aplicaciones Oracle funcionan perfectas.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A