Se quedan sesiones abiertas en Oacle

En el proyectoq ue estamos haciendo, al finalizar las transacciones se ejecuta el comando .close para cerrar las sesiones, sin embargo al revisar en la base de datos de Oracle las sesiones siguen ahí pero en estado inactivo, lo que provoca que cada que se estén abriendo sesiones se vayan acumulando. ¿Qué podemos hacer para que las sesiones se maten por completo al terminar las transacciones y que no se acumulen y bajen el rendimiento de la base de datos?

1 respuesta

Respuesta
1
No se si estáis llevando a cabo una trnasación directamente sobre la BBDD o mediante algún tipo de contenedor JAVA IAS etc.. Si lo lleváis a cabo mediante un IAS o webservice esa sesión siempre estará inactiva hasta que la uses, Para ello se declara el número de conexiones mínimo y máximo que quieres en el pool de conexiones. Aunque parezca una toteria haberis echo commit ; después del close.
Si me facilitáis más información talv ez encontremos que sucede .
Hola buenas tardes:
El proyecto esta hecho en .net y si se realizan transacción, y si se hace commit. efcetivamente se quedan las sesiones inactivas por largo tiempo hasta que Oracle las elimina por timeout. Pero mientras se quedan esas sesiones inactivas con un usuario, entra otro y se quedan más y así se van acumulando varias en un periodo de tiempo corto. Por lo pronto lo que hicimos fue crear un procedimiento que mata las sesiones, un select a v$session donde el osuser sea igual al que se esta logueando al sistema, el usuario sea igual al usuario de base de datos que utilzia nuestrpo sistema y program sea igual a nuestrosistema.exe. Este procedimiento lo ejecutamos cada que un usuario intenta loguarse al sistema, así matamos las sesiones que se hayan quedado de ese usuario. Esto si esta funcionando por el momento, pero no se si exista algo más efectivo sin necesidad de depender de ejecutar este procedimiento.
Muchas gracias.
Sinecerametne creo que lo adecuado es ver porque no estáis cerrando bien el pool de conexiones. Se te quedna encallada es precisamente por eso mismio, se abre sesión y no se cierra, es u problema de como declaráis el pool de conexiones en .net. Yo te recomendaría que lo mirareis con tiento, lo del proceso vale es una apaño temporal pero como tengáis una cantidad de accesos incontrolados ese proceso no os servirá, aparte supongo que abreis dado grant o lo lleváis acabo con el system de BBDD. Yo no lo recomiendo.
Recomentaria revisar el código del .net y ver exactamente como hacéis el tratamiento del pool y como abriis conexions. Probar en un entorno de pruebas a llevar a cabo una transacción y a cerrarle, De esta forma podréis ver que esta haciendo realmente esto y si es correcta. Si con una sola transacción no sabe que hacer tenéis el problema identeificado en este punto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas