Buen día a todo:
Mi pregunta como puedo hacer una consulta donde me diga que usuarios(conexiones) a la base de datos de oracle no esten ejecutando nada (query o proceso), en realidad saber que no esten haciendo nada y que tengan ya mucho tiempo en 'INACTIVE' para de este modo eliminarlas.
se me ocurre que con un profile matar todas las que esten en STATUS='SNIPED' de la vista V$SESSION pero que pasa si me guio por el tiempo y estan realizando algun query y los cambia de estado, por eso pienso que si manejo tiempo de conectado (LOGON_TIME) y saber si no hacen nada (PARA ESTO ES EL QUERY qUE MENCIONO) para asi matar las sesiones que en realidad son zombies.
Gracias a todos por sus posibles respuestas.
- Versión para impresión
- Inicie sesión para enviar comentarios
Y porquè no utilizas el
Subido por Carlos el 30 Julio, 2010 - 23:08
Y porquè no utilizas el parámetro IDLE_TIME del profile? Con el IDLE_TIME defines el tiempo máximo sin actividad que se permite a las conexiones. Cuando se supera este tiempo, definido en minutos, sin que la conexión haya tenido ninguna actividad, Oracle desconecta al usuario.
Por ejemplo, para crear un perfil definiendo un límite de máximo de inactividad de 30 minutos:
Y para asignar este perfil a cualquier usuario:
De todas maneras pruébalo bien antes de aplicarlo a todos los usuarios, porque las limitaciones de los profiles siempre son delicadas, y pueden producir algún efecto que no se había tenido en cuenta..
Gracias Carlos por la
Subido por Pedro Tablas Sanchez el 6 Agosto, 2010 - 23:51
En respuesta a Y porquè no utilizas el por Carlos
Gracias Carlos por la respuesta, y si eso ya lo tengo en unos usuarios pero en caso de otros necesito saber si no están inactivos pero talvez esten realizando alguna tarea (query) entonces debo de saber que en realidad esten ahi sin hacer nada para así poder eliminar esas sesiones, y el campo IDLE_TIME hacer que cambie de estatus en v$session a SNIPED.
que mas debo hacer para saber que no esten haciendo nada porque no puedo matarlas si enrelizadad estan haciendo u nquery y tarda 30 min y se quede inavtiva la session.
Gracias y Saludos.
Tienes razón Pedro, con el
Subido por Carlos el 10 Agosto, 2010 - 09:15
En respuesta a Gracias Carlos por la por Pedro Tablas Sanchez
Tienes razón Pedro, con el parámetro IDLE_TIME sólo se controla la inactividad de las sesiones por la parte cliente, pero los procesos que se han lanzado en el servidor pueden seguir ejecutándose con la sesión cliente inactiva.
Podrías probar a utilizar el parámetro EXPIRE_TIME de SQL*NET, que comprueba cada cierto tiempo (los minutos que le especifiques) que las conexiones estén activas a nivel cliente/servidor, la comprobación se hace desde la parte servidora. Ten cuidado, porque parece ser que consume bastantes recursos del servidor.
Te enlazo el Tip Terminating Oracle connections with connect_time, idle_time, expire_time andinbound_connect_timeout de Burleson Consulting, que explica cómo funciona este parámetro y como modificar el fichero sqlnet.ora para ponerlo en funcionamiento.
Gracias Carlos.. Lo voy a
Subido por Pedro Tablas Sanchez el 11 Agosto, 2010 - 03:02
En respuesta a Tienes razón Pedro, con el por Carlos
Gracias Carlos.. Lo voy a revisar y te cuento
Pasaron 6 años y no contaste
Subido por Virus (no verificado) el 6 Julio, 2016 - 17:45
En respuesta a Gracias Carlos.. Lo voy a por Pedro Tablas Sanchez
Pasaron 6 años y no contaste a Carlos.
Buen dia- como restringir por
Subido por silvia (no verificado) el 20 Agosto, 2010 - 22:37
Buen dia-
como restringir por listener o tnsnames que los usuarios que estan sniped y mato, no queden como killed y ese idle aumente y nunca mueran....??
no puedo hacer un job que los mate por sistema operativo, porque se manejan despachadores y mataria varios usuarios...
alguien tiene alguna idea, agradezco respuestas a mi correo.
quedo atenta
silvia
Hola Carlos como veo que es
Subido por Anonimo (no verificado) el 12 Octubre, 2014 - 21:07
Hola Carlos como veo que es lo que esta realizando un usuario conectado?
Saludos!!
Tienes que activar la
Subido por Carlos el 17 Octubre, 2014 - 11:03
En respuesta a Hola Carlos como veo que es por Anonimo (no verificado)
Tienes que activar la auditoría de Oracle sobre ese usuario. Te enlazo un tema de Auditoría, seguimiento y seguridad en BD Oracle, en el que encontrarás informacion sobre cómo activar la auditoría sobre usuarios y otros objetos de BBDD Oracle.
Mientras no activas la auditoría, otra manera de ver lo que hace un usuario 'al vuelo' es utilizando esta consulta:
Últimas consultas SQL ejecutadas en Oracle y usuario que las ejecutó