Número de sesiones abiertas por cada dblink

810 views
Skip to first unread message

Cristina Garcia

unread,
Jul 3, 2014, 5:53:59 AM7/3/14
to foro...@googlegroups.com

Buenos días,

¿Qué tal estamos?  ¿Qué tal va el verano? Yo hasta la segunda quincena de septiembre no me voy :'(
 
Para no perder la costumbre, necesito ayuda.... Estoy atascada y no encuentro la forma de sacar el número de sesiones que abre cada dblink,  ¿alguien sabe como hacerlo?

Muchas gracias.

JAP

unread,
Jul 3, 2014, 6:11:08 AM7/3/14
to foro...@googlegroups.com
En origen o en destino?


--
Has recibido este mensaje porque estás suscrito al grupo "FORO_DBA" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a foro_dba+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
José Antonio de Pablo Jiménez
Principal IT Consultant & CTO
SYSCONFIG Gestión de Sistemas, SLU
www.sysconfig-gs.net
www.linkedin.com/company/sysconfig-gs

Cristina Garcia

unread,
Jul 3, 2014, 6:13:44 AM7/3/14
to foro...@googlegroups.com

En destino

JAP

unread,
Jul 3, 2014, 6:21:24 AM7/3/14
to foro...@googlegroups.com
cada db_link utiliza un "service_name" espefifico publicado en el LISTENER de la bbdd destino?

Cristina Garcia

unread,
Jul 3, 2014, 6:25:12 AM7/3/14
to foro...@googlegroups.com

El nombre del servicio es el mismo.

JAP

unread,
Jul 3, 2014, 6:40:53 AM7/3/14
to foro...@googlegroups.com
Pues no puedes averiguarlo...

puedes suponer calculando las conexiones que salen de cada bbdd origen contra la bbdd destino y sumarlas...

o filtrarlas por usuario de bbdd (si es que los del db_link) utilizan uno especifico que los defina... o puedes aumentar las trazas del listener (quiza con el nivel estándar valga) y hacer un filtrado por las IP de las bbdd origen... hay muchas posibilidades no sencillas ni rápidas ni 100% eficaces...

con un service_name para cada db_link sería una query contra v$session... :-(

Guille Yahoo

unread,
Jul 3, 2014, 6:49:25 AM7/3/14
to foro...@googlegroups.com

Yo lo haria asi:

 

 

select program Aplicacion, username

from v$session

where program='ORACLE.EXE'

and username='SAPLINK'

 

igual tienes que saber como se llama el dblink, pero sino desde la v$session te dara mas informacion y podras afinar.

--

Cristina Garcia

unread,
Jul 3, 2014, 6:56:19 AM7/3/14
to foro...@googlegroups.com

Muchas gracias, si el problema es que el dblink abre las conexiones en la de destino,  y no se cierran, y los de aplicacion no quieren tocar el codigo paea liberarlo, por eso quería sacar el número de conexiones que se abría por cada dblink,  porque hemos tenido que aumentar el número de conexiones que se permiten y desde was, vaciar el pool. Vamos para hacer el informe y presionar a los de la aplicación.

Muchas gracias! !!

Guille Yahoo

unread,
Jul 3, 2014, 7:10:11 AM7/3/14
to foro...@googlegroups.com

Y porque no matais vosotros las sesiones automáticamente de ese usuario en concreto pasado x tiempo?

 

Lo podeis hacer desde el profile.

 

Crear un nuevo profile en bbdd con un determinado tiempo, y Oracle los va cerrando. Ese es el valor idle time.

 

 

Por lo general los dblink se quedan abierto aun cuando se cierren las conexiones de las aplicaciones.

Yo lo que hago es matar sesiones después de un tiempo que están inactivas…..

Y para los dblink uso un profile.

image001.png

Cristina Garcia

unread,
Jul 3, 2014, 7:30:23 AM7/3/14
to foro...@googlegroups.com

La deja snipe y sigue contando como sesión y acaba tirando la bbdd, prefieren asumir el coste de vaciar el pool antes de que se queden sin bbdd

Guille Yahoo

unread,
Jul 3, 2014, 8:55:19 AM7/3/14
to foro...@googlegroups.com

Claro la deja snipe porque luego tienes que forzar tu a matar las snipe.

 

Te pongo lo que hago yo….

 

Os creáis un job que corra cada 5 minutos y haga esto…. Vais a matar solo las siped y fuera problemas

 

SET PAGESIZE 100

SET LINESIZE 3200

spool X:\Sesiones_automaticas_M7P\kill_sniped.sql;

SELECT 'ALTER SYSTEM KILL SESSION '||''''||SID||','||SERIAL#||''''||' IMMEDIATE'||';'

FROM V$SESSION WHERE STATUS='SNIPED';

spool off;

@X:\Sesiones_automaticas_M7P\kill_sniped.sql;

exit

image001.png

Cristina Garcia

unread,
Jul 3, 2014, 9:30:43 AM7/3/14
to foro...@googlegroups.com

Graciasssss

JAP

unread,
Jul 3, 2014, 11:50:57 AM7/3/14
to foro...@googlegroups.com
Pues yo me he perdido...

Una conexión por db_link,
insert into tabla_local as select * from tabla@dblink1;
commit;
hace la consulta, devuelve los resultados y se cierra (palabrita del niño jesús)... no se como interviene un servidor de aplicaciones, un middleware o cualquier otra cosa... la única mánera de dejar esa conexión abierta es que la query sobre la tabla remota no termine con lo cual no es un problema del db_link sino del código (y en ese caso, al estar trabajando la consulta el PROFILE en destino no la puede poner en SNIPED ya que está activa. Aunque un PROFILE en origen si podría determinar que no está haciendo nada)...
Por supuesto, si cierras la sesión en la base de datos origen, cierras la conexión a la bbdd remota... perdonadme pero no comprendo el problema... ¿Que was es ese que no cierra las sesiones? ¿La bbdd acaba cayendo por un número excesivo de conexiones o simplemente no acepta más por parámetros de bbdd o limitación de ssoo?

Un saludo

Cristina Garcia

unread,
Jul 3, 2014, 12:10:32 PM7/3/14
to foro...@googlegroups.com

Es un shared dblink.
La bbdd se acaba cayendo porque se excede el número máximo de sesiones.  Los programadores tienen mal el código, pero dicen que no lo cambian.
Las conexiones se abren y no se cierran hasta con selects, con un commit se cerrarían, pero como no quieren hacerlo... y son sesiones que están inactivas.  Desde was han puesto el vaciado del pool por debajo del número máximo de sesiones, para evitar que la bbdd se caiga, pero esto hace que la aplicación vaya más lenta. Por eso Guille, me ha dicho lo del profile y el job.

Guille Yahoo

unread,
Jul 3, 2014, 12:43:27 PM7/3/14
to foro...@googlegroups.com

Exactooooooo.

 

Esto pasa mucho jap cuando ese dblink lo usa forms y no te cuento con una bbdd Oracle con SAP.

 

Los dblink se quedan y no caen y por esa razón le he dado esta solución a cristina.

image001.png

JAP

unread,
Jul 4, 2014, 3:54:08 AM7/4/14
to foro...@googlegroups.com
Okkkkkkkkkkkk.... no lo comprendía...

gracias a ambos por la aclaración.

Salu2

Cristina Garcia

unread,
Jul 4, 2014, 3:59:30 AM7/4/14
to foro...@googlegroups.com

Muchas gracias a vosotros por el cable  :-D

Guille Yahoo

unread,
Jul 7, 2014, 1:34:37 PM7/7/14
to foro...@googlegroups.com

Mira jap, esta es la bbdd de pruebas donde no matamos sesiones, mira como quedan los dblinks cuando son por programas.

 

image002.png
image003.png

JAP iDBA

unread,
Jul 7, 2014, 1:58:32 PM7/7/14
to foro...@googlegroups.com
Vale lo pillo... Pero convendrás conmigo q el db_link aquí es el Martillo... usado mal puede abrirle la cabeza a alguien pero nunca será culpa del martillo
;-)

José Antonio de Pablo Jiménez .
Principa I.T. Consultant & CIO.
SYSCONFIG Gestión de Sistemas SLU

On 07/07/2014, at 19:34, 'Guille Yahoo' via FORO_DBA <foro...@googlegroups.com> wrote:

Mira jap, esta es la bbdd de pruebas donde no matamos sesiones, mira como quedan los dblinks cuando son por programas.

 

<image002.png>

<image003.png>

Guille Yahoo

unread,
Jul 7, 2014, 2:48:00 PM7/7/14
to foro...@googlegroups.com

Exactoooooo tienes razon pero el problema es la peña que no hace caso y no quiere mejorar las cosas.

Cristina Garcia

unread,
Jul 8, 2014, 2:32:41 AM7/8/14
to foro...@googlegroups.com
Pero como siempre, es más fácil poner una "ñapa" en la bbdd que los programadores hagan bien su trabajo y corrijan su código.
Reply all
Reply to author
Forward
0 new messages