IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Fabien Celaia

Oracle cluster, local_listener et DirectAccess

Noter ce billet
par , 10/04/2018 à 17h52 (1085 Affichages)
Un cas étrange m'a occupé quelques heures...

J'ai plusieurs instances de bases de données sur un cluster Oracle à 2 nœuds.

Tout se passe bien... depuis plusieurs mois... pas de perte de connexion, pas de soucis.

Arrivent les premiers postes DirectAccess... et là, un phénomène étrange apparaît
  • si le poste se connecte sur notre intranet, aucun souci de connexion
  • si le même poste se connecte via DirectAccess (donc depuis n'importe quel Internet), connexion impossible (ORA-12543: TNS:destination host unreachable), bien que le tnsping se passe correctement


Il s'avère que cela est dû à une mauvaise configuration du paramètre local_listener.

Dès la version 12 du RAC, le remote listener pointe sur l'adresse scan... par son nom... pas par son ip
Par contre, par défaut, le local_listener pointe sur l'IPv4 de l'adresse vip...

C'est la que le bas blesse : DirectAccess travaille en IPv6 et remappe les adresses IPv4 en IPv6.
L'instance retournant un local_listener en mode IPv4, le mappage ne peut se faire.

Il s'agit donc de modifier le local_listener en y spécifiant le nom DNS (ou du fichier hosts), mais pas l'adresse IPv4... et pour être plus précis, mieux vaut le faire avec l'adresse vip propre à chaque instance, soit dans mon cas
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=oradvp-p01-vip.infra.vs.ch)(PORT=1521))' scope=both sid='DVP1' ; 
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=oradvp-p02-vip.infra.vs.ch)(PORT=1521))' scope=both sid='DVP2' ;

L'intérêt de la chose apparaît lorsqu'une éviction de nœud apparaît. Dans le cas de cette configuration, l'adresse vip de l'instance problématique est très vite migrée sur le nœud restant et l'incidence de la perte de l'instance est minime.

Si par contre vous maintenez le même paramètre local_listener pour les 2 instances, dans un cas sur 2, il vous faudra attendre le timeout sur votre connexion problématique avant que la reconnexion ait lieu... avec un risque de perte plus important.

Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Viadeo Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Twitter Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Google Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Facebook Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Digg Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Delicious Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog MySpace Envoyer le billet « Oracle cluster, local_listener et DirectAccess » dans le blog Yahoo

Catégories
SGBD , Oracle

Commentaires