Les verrous NFSv3 obsolètes
Si un serveur de base de données Oracle tombe en panne, des verrous NFS obsolètes peuvent se présenter au redémarrage. Ce problème peut être évité en portant une attention particulière à la configuration de la résolution de nom sur le serveur.
Ce problème survient parce que la création d'un verrou et l'effacement d'un verrou utilisent deux méthodes légèrement différentes de résolution de nom. Deux processus sont impliqués, Network Lock Manager (NLM) et le client NFS. Le NLM utilise uname n
pour déterminer le nom d'hôte, pendant que le système rpc.statd
utilisations des processus gethostbyname()
. Ces noms d'hôte doivent correspondre pour que le système d'exploitation efface correctement les verrous obsolètes. Par exemple, l'hôte peut rechercher des verrous appartenant à dbserver5
, mais les verrous ont été enregistrés par l'hôte comme dbserver5.mydomain.org
. Si gethostbyname()
ne renvoie pas la même valeur que uname –a
, le processus de déverrouillage n'a pas réussi.
L'exemple de script suivant vérifie si la résolution des noms est parfaitement cohérente :
#! /usr/bin/perl $uname=`uname -n`; chomp($uname); ($name, $aliases, $addrtype, $length, @addrs) = gethostbyname $uname; print "uname -n yields: $uname\n"; print "gethostbyname yields: $name\n";
Si gethostbyname
ne correspond pas uname
, des verrous obsolètes sont probables. Par exemple, ce résultat indique un problème potentiel :
uname -n yields: dbserver5 gethostbyname yields: dbserver5.mydomain.org
La solution est généralement trouvée en modifiant l'ordre dans lequel les hôtes apparaissent dans /etc/hosts
. Par exemple, supposons que le fichier hosts inclut l'entrée suivante :
10.156.110.201 dbserver5.mydomain.org dbserver5 loghost
Pour résoudre ce problème, modifiez l'ordre dans lequel le nom de domaine complet et le nom d'hôte court apparaissent :
10.156.110.201 dbserver5 dbserver5.mydomain.org loghost
gethostbyname()
renvoie maintenant le court dbserver5
nom d'hôte, qui correspond à la sortie de uname
. Les verrous sont donc effacés automatiquement après une panne de serveur.