Comment puis-je empêcher Oracle SQL Developer de fermer la connexion DB?
y a-t-il un moyen d'empêcher Oracle SQL Developer de fermer mes connexions DB, ou d'augmenter le délai d'attente? Parfois, lors d'une requête longue durée SQL Dev va tout simplement fermer la connexion, laissant ma requête en cours d'exécution sur le serveur, mais moi avec aucun résultat. Si j'entre dans le serveur et exécute SQL Dev localement, il ne semble jamais y avoir ce problème.
6 réponses
cela ne ressemble pas à un problème avec SQL developer, cétainly Je ne l'ai jamais rencontré. Êtes-vous sûr que ce n'est pas autre chose, comme votre réseau? Que se passe-t-il si vous vous connectez à partir de SQL plus depuis votre bureau?
Je n'ai pas la réponse pour ça, mais j'ai le même problème.
le pare-feu entre mon développeur SQL et la base de données ferme automatiquement les sessions "inactives". Une requête en cours d'exécution est selon le pare-feu une session inactive, donc il la ferme. Je n'ai pas encore trouvé comment faire en sorte que SQL Developer envoie des paquets sur une connexion avec une requête longue durée, de sorte que le pare-feu ne ferme pas la connexion. Et je ne sais pas si c'est possible tout.
donc je ne pense pas que ce soit un problème de développeur SQL, mais un problème de pare-feu.
-- MISE à jour
Il y a une extension pour SQL Developer, qui vous permet de garder les connexions actives: http://sites.google.com/site/keepaliveext/
il n'est pas encore totalement terminé (par exemple, la notification que vous recevez indique le même délai, peu importe le délai que vous avez spécifié) mais il fait l'affaire. Je n'ai pas encore testé contre l' dernière pré-version de SQL Developer, mais cela a fonctionné avec SQL Developer 2.2.x
-- MISE à jour
Pour SQL Developer 4+, vous pouvez utiliser: http://scristalli.github.io/SQL-Developer-4-keepalive/
Voici une autre extension active Keep Connection qui pourrait être utile. (L'extension mentionnée ci-dessus contient un certain nombre de questions qui sont résolues dans cette extension.)
cela ressemble aussi à un problème de pare-feu pour moi.
vous avez peut-être de la chance avec le paramétrage EXPIRE_TIME dans le SQLNET du serveur.Ora file. À partir de la documentation:
utiliser le paramètre SQLNET.EXPIRE_TIME spécifie un intervalle de temps, en minutes, pour envoyer une sonde pour vérifier que les connexions client/serveur sont actives. Le réglage d'une valeur supérieure à 0 garantit que les connexions ne sont pas laissées ouvertes indéfiniment, en raison d'une résiliation anormale du client. Si la sonde trouve une connexion terminée, ou une connexion qui n'est plus utilisée, renvoie une erreur, provoquant la sortie du processus du serveur. Ce paramètre est principalement destiné au serveur de base de données, qui gère plusieurs connexions à la fois.
comme solution temporaire, à côté de' Data Grid 'vous trouverez l'onglet' DBMS Output', activez la sortie DBMS et réglez la fréquence de sondage à un temps agréable.
notre DBA semble avoir trouvé une solution à cela:
2.2. S'il y a un pare-feu entre L'instance OC4J et la base de données Le pare-feu peut supprimer les connexions inactives jdbc sur le serveur de base de données. Cependant, L'instance OC4J ne peut pas détecter que le pare-feu a chronométré la connexion à la base de données. Oracle Net peut être configuré avec la détection de connexion morte (SQLNET.EXPIRE_TIME) pour contourner ce problème. Définir EXPIRE_TIME sur le serveur de la base de données à une valeur inférieure à le délai de connexion du pare-feu pour que DCD maintienne la connexion à la base de données en vie. Voir la Note 151972.1"explication de la détection de connexion morte (DCD)". Puisqu'il s'agit d'un paramètre configuré sur le serveur de base de données, et non sur le midtier, il s'appliquera à toutes les connexions de base de données (OCI et thin JDBC). Des solutions alternatives: - Désactiver ou d'augmenter le délai d'inactivité paramètre du pare-feu. ou - Configurer le paramètre TCP Keepalive time sur la base de données et sur les serveurs midtier à une valeur inférieure à temps d'arrêt de la connexion au pare-feu. Après avoir paramétré le temps TCP Keepalive, les machines enverront à plusieurs reprises un paquet nul après les minutes spécifiées pour maintenir les connexions en vie. Comme le paquet est envoyé à chaque fois que le pare-feu est inactif, la connexion ne sera pas fermée.