script - la ventana de conexiones de sql developer de oracle no aparece
¿Cómo puedo evitar que Oracle SQL Developer cierre la conexión DB? (6)
¿Hay alguna manera de evitar que Oracle SQL Developer cierre mis conexiones de bases de datos o aumentar el tiempo de espera? Algunas veces, durante una consulta de larga ejecución, SQL Dev simplemente cierra la conexión, dejando mi consulta ejecutándose en el servidor pero sin resultados. Si conecto RDP al servidor y ejecuto SQL Dev localmente, nunca parece tener este problema.
Aquí hay otra extensión Keep Connection Active que podría ser de utilidad. (La extensión mencionada anteriormente contiene una serie de problemas que se resuelven en esta extn).
Como solución temporal, al lado de ''Data Grid'' encontrará la pestaña ''DBMS Output'', activará la salida DBMS y establecerá la frecuencia de sondeo en un tiempo agradable.
Esto no suena como un problema con el desarrollador de SQL, por supuesto que nunca me he encontrado. ¿Estás seguro de que no es otra cosa, como tu red? ¿Qué sucede si te conectas desde SQL plus desde tu escritorio?
No tengo la respuesta para esto, pero estoy experimentando el mismo problema.
El firewall entre mi SQL Developer y la base de datos cierra automáticamente las sesiones "inactivas". Una consulta de larga ejecución es de acuerdo con el cortafuegos una sesión inactiva, por lo que la cierra. Todavía no he encontrado cómo hacer que SQL Developer envíe paquetes a través de una conexión con una consulta de larga ejecución, para que el firewall no cierre la conexión. Y no sé si esto es posible en absoluto.
Así que no creo que sea un problema de SQL Developer, sino un problema de firewall.
- ACTUALIZAR
Existe una extensión para SQL Developer que le permite mantener activas las conexiones: http://sites.google.com/site/keepaliveext/
Todavía no está totalmente terminado (por ejemplo, la notificación que recibe establece el mismo tiempo de espera sin importar el tiempo de espera que haya especificado) pero cumple su cometido. Todavía no lo he probado contra el último lanzamiento previo de SQL Developer, pero funcionaba con SQL Developer 2.2.x.
- ACTUALIZAR
Para SQL Developer 4+ puede usar: http://scristalli.github.io/SQL-Developer-4-keepalive/
También me parece un problema de firewall.
Puede tener algo de suerte al establecer el parámetro EXPIRE_TIME en el archivo SQLNET.ORA del servidor. De la documentación:
Use el parámetro SQLNET.EXPIRE_TIME para especificar un intervalo de tiempo, en minutos, para enviar una sonda y verificar que las conexiones cliente / servidor estén activas. Establecer un valor mayor que 0 asegura que las conexiones no se dejan abiertas indefinidamente, debido a una terminación anormal del cliente. Si la sonda encuentra una conexión terminada, o una conexión que ya no está en uso, devuelve un error, lo que hace que el proceso del servidor salga. Este parámetro está destinado principalmente para el servidor de base de datos, que generalmente maneja múltiples conexiones en cualquier momento.
nuestro DBA parece haber encontrado una solución a esto:
2.2. Si hay un cortafuegos presente entre la instancia de OC4J y la base de datos, el cortafuegos podría desconectar las conexiones de jdbc inactivas al servidor de la base de datos. Sin embargo, la instancia OC4J no puede detectar que el firewall ha agotado el tiempo de espera de la conexión a la base de datos. Oracle Net se puede configurar con Dead Connection Detection (SQLNET.EXPIRE_TIME) para solucionar este problema. Establezca EXPIRE_TIME en el servidor de la base de datos a un valor inferior al tiempo de espera de la conexión del firewall, de modo que DCD mantenga activa la conexión a la base de datos. Ver la Nota 151972.1 "Explicación de la conexión muerta (DCD)". Como se trata de una configuración configurada en el servidor de la base de datos, no en el midtier, se aplicará a todas las conexiones de la base de datos (OCI y thin JDBC). Soluciones alternativas: - Desactive o aumente el parámetro de tiempo de espera inactivo del firewall. o bien - Configure la configuración de tiempo de TCP Keepalive en la base de datos y en los servidores midtier a un valor menor que el tiempo de espera de conexión del firewall. Después de configurar el tiempo de TCP Keepalive, las máquinas enviarán repetidamente un paquete nulo después de los minutos especificados para mantener las conexiones activas. A medida que el paquete se envía cada vez dentro del tiempo de espera inactivo del cortafuegos, la conexión no se cerrará.