Oracle KeepAlive 11g

Oracle KeepAlive 11g

Résolution des problèmes liés au délai d'inactivité de la connexion

TCP KeepAlive

Assurez-vous que TCP KeepAlive est correctement défini pour votre environnement. Reportez-vous à la documentation de votre système d'exploitation pour les détails.



DCD pour les serveurs de

base de données Pour les connexions de base de données, l'un des points de terminaison est un programme d'écoute passif, qu'il s'agisse d'un processus dédié ou d'un processus de répartiteur. Si la connexion devient noir, ce backend ne saura jamais que le client ne peut plus envoyer de requêtes, puis verrouillera les ressources importantes comme des sessions de base de données, des verrous et au moins un descripteur de fichier utilisé pour maintenir le socket. 

Une solution consiste à rendre ce backend "pas si" passif, en utilisant le DCD (détection de connexion morte) pour déterminer si la communication est toujours possible.  

Définissez simplement dans le répertoire $ ORACLE_HOME / network / admin / sqlnet.ora, côté serveur SQLNET.EXPIRE_TIME = 10 (10 minutes, par exemple). Avec ce paramètre en place, après 10 minutes d'inactivité, le serveur envoie un petit paquet de sonde de 10 octets au client. Si ce paquet n'est pas accusé de réception, la connexion sera fermée et les ressources associées seront libérées. 

Ce DCD présente deux avantages: 
1. Si SQLNET.EXPIRE_TIME est inférieur au délai d'attente d'inactivité de la connexion FW, le pare-feu * peut considérer ce paquet comme une activité et le délai d'inactivité (coupure du pare-feu) n'arrivera jamais. jusqu'à ce que les processus client et serveur soient tous deux actifs. 

2.Si le SQLNET.EXPIRE_TIME (disons un peu plus haut) que la limite d'inactivité FW, alors, dès que la panne se produit, le SGBDR connaîtra et fermera la connexion. 

Le premier cas est recommandé lorsque la connexion provient d'un autre serveur d'application et le second est logique pour les applications client. 

DCD fonctionne au niveau de l'application et fonctionne également sur le protocole TCP / IP. Si vous avez défini le paramètre SQLNET.EXPIRE_TIME = 10, ne vous attendez pas à ce que les connexions soient marquées comme mortes exactement après 10 minutes de panne d'électricité ou de réseau. Veuillez vous reporter à la Note: 151972.1  "Détection de connexion morte (DCD) expliquée" pour plus de détails sur le DCD. Les valeurs TCP timeout et TCP retransmission s'ajoutent également à ce temps.  

VEUILLEZ NOTER:
DCD n'a jamais été conçu pour être utilisé comme un «générateur de trafic virtuel» car nous voulons l'utiliser ici. Ceci est simplement un effet secondaire utile de la fonctionnalité. 
En fait, certains pare-feu ultérieurs et le microprogramme de pare-feu mis à jour risquent de ne pas voir les paquets DCD comme un trafic valide, peut-être parce que les paquets envoyés par DCD sont en réalité des paquets vides. Par conséquent, DCD peut ne pas fonctionner comme prévu et le pare-feu / commutateur peut toujours terminer les sockets TCP qui sont inactifs pour la période surveillée, même lorsque DCD est activé et fonctionne. 
Dans ce cas, le délai d'expiration du pare-feu doit être augmenté ou les utilisateurs ne doivent pas laisser l'application inactive pendant plus longtemps que le délai d'inactivité configuré sur le pare-feu.