Oracle cluster, local_listener et DirectAccess
par
, 10/04/2018 à 17h52 (1142 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.