Por qué las sesiones de Oracle siguen vivas después de dos semanas inactivas


16

DB: Oracle 10g

O / S: Windows Server 2003 64 bits

Consulto la lista de sesiones de Oracle generadas por las aplicaciones web (filtro por programa = w3wp.exe)

select * from V$session
where UPPER(program) LIKE '%W3%'
order by logon_time

ingrese la descripción de la imagen aquí

Según Logon_Time, ¿por qué todavía hay sesiones activas desde el 31/07/2012 o el 01/08/2012 o cualquier sesión antes de hoy (21/08/2012)?

Lo configuré en sqlnet.ora: SQLNET.EXPIRE_TIME = 20. Esto significa que cada 20 minutos Oracle verifica si las conexiones aún están activas.

Todos los esquemas de usuario tienen un perfil predeterminado. ¿Significaría que ninguna sesión nunca expiraría o moriría?

ingrese la descripción de la imagen aquí

Agregado en respuesta al comentario de Phil:

ingrese la descripción de la imagen aquí

Agregado en respuesta a la respuesta de Phil:

ingrese la descripción de la imagen aquí


¿Qué es v$session.PREV_EXEC_STARTpara estas sesiones? Sospecho que son parte de un grupo de conexiones y, por lo tanto, no se han inactivo porque se usan con frecuencia.
Philᵀᴹ

El mío es Oracle 10g, por lo que no hay una columna PREV_EXEC_START en v $ session. Pero tengo una consulta nuevamente que incluye la columna Last_Call_ET (agregué esa imagen en mi pregunta).
Delmonte

Hablé con nuestros desarrolladores y me dijeron que están usando ODP.NET en sus aplicaciones web. Por lo tanto, es seguro que esas sesiones se generaron en un grupo de conexiones. No confío completamente cuando Oracle muestra el estado INACTIVO, pero en este caso ... ¿Crees que podría matar sesiones de hace dos semanas?
Delmonte

77
No. INACTIVEsimplemente significa que no se está ejecutando una instrucción SQL en el momento exacto en que la verifica v$session. Si forman parte de un grupo de conexiones, están haciendo su trabajo correctamente: el objetivo de la agrupación de conexiones es eliminar la necesidad de muchos inicios de sesión / cierres de sesión y mantener sesiones persistentes para un inicio rápido (inicio de sesión mucho mayor una y otra vez solo para ejecutar una consulta). No entiendo por qué estás preocupado por esto.
Philᵀᴹ

@ Phil: ¡felizmente votaré eso como respuesta!
Justin Cave

Respuestas:


22

Sospecho que son parte de un grupo de conexiones y, por lo tanto, no se han inactivo porque se usan con frecuencia.

INACTIVEen v$sessionsimplemente significa que no hay una instrucción SQL que se está ejecutando en el momento exacto de comprobar v$session.

Si forman parte de un grupo de conexiones, están haciendo su trabajo correctamente al iniciar sesión durante largos períodos de tiempo. El objetivo de la agrupación de conexiones es eliminar la necesidad de muchos inicios de sesión / cierres de sesión y mantener sesiones persistentes para un inicio rápido de consultas: hay una sobrecarga de inicio de sesión mucho mayor para ejecutar una consulta, y luego se desconecta cada vez.

Para obtener el último tiempo de actividad para cada sesión:

select username, UPPER(program), logon_time, 
       floor(last_call_et / 60) "Minutes since active", status
from v$session
where UPPER(program) LIKE '%W3%'
order by last_call_et;

Aconsejaría que no se eliminen las sesiones, a menos que sepa que hacerlo no causará problemas en el lado de la aplicación (por ejemplo, si intenta utilizar una sesión eliminada).

Es posible que esté viendo un grupo de conexiones configurado incorrectamente que crea cientos de conexiones una vez que se inicia la aplicación; el grupo de conexiones puede ser un orden de magnitud mayor de lo necesario. Sugiero contactar al personal de soporte de desarrolladores / aplicaciones y echar un vistazo a cómo se configura el grupo de conexiones.

Después de investigar un poco, w3wp.exe es el proceso del grupo de aplicaciones de IIS: es casi seguro que desea hablar con los administradores del servidor web de IIS para ayudarlo a llegar al final de la configuración de la agrupación de conexiones.


Gracias por su explicación, pero ¿qué pasa si los valores de esas sesiones de odp.net están creciendo y creciendo en números? Consulto v $ resource_limit (agregado en mi pregunta original) y muestra que los valores de procesos y sesiones están alcanzando el 80% del límite de valor. ¿Esas sesiones de odp.net podrían estar consumiendo los valores de mis sesiones, alcanzar el valor límite de 701 y luego abandonar la conexión de mi base de datos? (Sé que podría extender esos valores límite a 1000 o 2000, pero no es parte de la pregunta)
Delmonte

Entonces tienes un problema de aplicación.
Philᵀᴹ

¿Por qué? Las aplicaciones web están abriendo, cerrando y eliminando la conexión odp.net ... Según tengo entendido, esas sesiones de odp.net siguen vivas esperando conexiones futuras, incluso si la aplicación web las dispone.
Delmonte

Parece que será un problema de configuración del grupo de conexión. ¿Has graficado un recuento (*) de v $ sesión a lo largo del tiempo? ¿Tiene una licencia de paquete de diagnóstico para la base de datos?
Philᵀᴹ

3
Supongo que se refería a IIS (servidor HTTP / aplicación de Microsoft), no ISS (la Estación Espacial Internacional) :-)
Justin Cave
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.