Oracle - Sesiones en la Base de Datos

 
Vista:

Sesiones en la Base de Datos

Publicado por Manuel Acosta (1 intervención) el 25/06/2010 21:52:42
- 64Bit
- Sistema Operativo Oracle Enterprise Linux R.4 U.5
- Base de Datos 10.2.0.4
- Application Server 10.1.2.3

Muy buen día para todos y muchas gracias de antemano por la ayuda que puedan prestarme en esta ocasión.

Lo que a continuación explico no ocurre todo el tiempo, pero ocurre.

Al ejecutar la sentencia "alter system kill session 999,999 [immediate];" para poder matar una sesión de un usuario cualquiera por un motivo X en la base de datos; en algunos casos esta sesión queda con Status = KILLED y Server = PSEUDO y simplemente permanecen en la base de datos y no tengo manera de matarlas, esto trae como consecuencia entre otras, que el usuario dueño de esta sesión no pueda ingresar nuevamente a la base de datos por restricción en el profile (sesiones simultaneas), revisando por internet me hablan de matar el proceso por el sistema operativo, pero esto tampoco es posible, ya que el proceso que identificaría esta sesión es Process=NULL, es decir ya no existe como proceso del sistema operativo. Como dije antes no tengo manera de deshacerme de estas sesiones.

Por otro lado, también trae como consecuencia que el proceso "ORA_PMON_XXXXX" sube al 100% de uso del procesador y la única forma de liberarme de esto es bajar y subir la base de datos.

Como dato les informo, las conexiones de los usuarios a la base de datos, son de modo DEDICATED y vienen desde un servidor de Application
Server.

¿Como puedo corregir esto?

Que me pueden decir al respecto:
- Existe alguna parametrización (sistema operativo y/o base de datos) para evitar esto.
- Se puede pensar en un bug??
- ??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sesiones en la Base de Datos

Publicado por Luis (4 intervenciones) el 30/06/2010 19:20:52
Buenas Manuel, prueba con esto,

Con esta query obtendras tanto SID, el SERIAL# y lo más interesante el PID de sistema operativo de cada sesión,

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 108 3917 56061
TUUSUARIO 158 58 51062
TUUSUARIO 41 4647 14649

Antes de matar la sesión ejecuta esta query para obtener elPID de la sessión que deseas matar, luego matas la sesión , yo lo haría así,

ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

Si no muere entonces desde el sistema operativo kill -9 al PID, ejemplo,

$kill -9 56061

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sesiones en la Base de Datos

Publicado por Sergio (39 intervenciones) el 16/07/2010 03:22:28
Revisa en ese momento el alert_log de la base de datos y el log del servidor de aplicaciones en busca de actividad inusual. Es posible que tu problema se deba a bloqueos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar