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.
- Printer-friendly version
- Log in to post comments
Y porquè no utilizas el
Submitted by Carlos on Fri, 07/30/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
Submitted by Pedro Tablas Sanchez on Fri, 08/06/2010 - 23:51
In reply to Y porquè no utilizas el by 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
Submitted by Carlos on Tue, 08/10/2010 - 09:15
In reply to Gracias Carlos por la by 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
Submitted by Pedro Tablas Sanchez on Wed, 08/11/2010 - 03:02
In reply to Tienes razón Pedro, con el by Carlos
Gracias Carlos.. Lo voy a revisar y te cuento
Pasaron 6 años y no contaste
Submitted by Virus (not verified) on Wed, 07/06/2016 - 17:45
In reply to Gracias Carlos.. Lo voy a by Pedro Tablas Sanchez
Pasaron 6 años y no contaste a Carlos.
Buen dia- como restringir por
Submitted by silvia (not verified) on Fri, 08/20/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
Submitted by Anonimo (not verified) on Sun, 10/12/2014 - 21:07
Hola Carlos como veo que es lo que esta realizando un usuario conectado?
Saludos!!
Tienes que activar la
Submitted by Carlos on Fri, 10/17/2014 - 11:03
In reply to Hola Carlos como veo que es by Anonimo (not verified)
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ó