¿Cómo puedo evitar el límite de Oracle DBLinks en Entity Framework?

votos
1

Estoy creando una aplicación MVC utilizando Entity Framework de Oracle, y escribo un poco de código para iterar a través de todos DBLinks pertinentes y probándolos, volviendo una cuadrícula de resultados (éxito / fracaso). Mi problema es que después de usar el cuarto DBLink, me sale un error ORA-02020: demasiados enlaces de base de datos en uso.

He tratado de cerrar explícitamente cada DBLink después de usarlo ( alter sesión estrecho vínculo de base de datos LinkName), pero luego recibo un error ORA-02080: enlace de base de datos está en uso.

He tratado de emisión COMMIT declaración antes de intentar cerrar la DBLink, pero eso no cambia el error ( enlace de base de datos está en uso).

He tratado de cerrar la conexión de base de datos, pero aún así recibir el enlace de base de datos está en uso error al crear una nueva conexión y tratar de cerrar la DBLink.

Por desgracia, lo que aumenta el número de DBLinks disponibles (open_links, open_links_per_instance) no es una opción.

Alguien ha visto esto con Entity Framework y descubrió una solución? ¿Alguien tiene alguna idea de qué más probar?

Publicado el 27/11/2018 a las 16:49
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

¡VICTORIA! He descubierto que si fijo "Pooling = false" en mi cadena de conexión, entonces este error desaparece en todos los escenarios ofensivos. Esto es viable para mí ya que esto sólo se utiliza para probar los DBLinks en la demanda, por lo que se puede apagar de forma segura la puesta en común en este escenario. Muchas gracias por sus respuestas. Yo estaba listo para convertir la toalla y admitir la derrota

Respondida el 29/11/2018 a las 20:48
fuente por usuario

votos
0

Para ver cuántos db linksestán abiertos i syour uso sesión de la GV$DBLINKvista

select DB_LINK from GV$DBLINK;

DB_LI
-----
LEDRP
YDO

Para cerrar un db linkdebe hacer dos cosas.

En primer lugar commit, o rollbackla transacción. Tenga en cuenta que incluso si usted no cambia nada una transacción está abierto debido a la utilización de la DB LINK.

En segundo lugar se debe CLOSE DATABASE LINKusar el ALTER SESSIONcomunicado.

rollback;
ALTER SESSION CLOSE DATABASE LINK LEDRP;

Ves, ese enlace es cerrada y no aparece en la vista:

select DB_LINK from GV$DBLINK;

DB_LI
-----
YDOV
Respondida el 28/11/2018 a las 10:41
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more