Skip to main content
Enterprise applications
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Veraltete NFSv3-Sperren

Beitragende

Wenn ein Oracle-Datenbankserver abstürzt, kann es beim Neustart zu Problemen mit veralteten NFS-Sperren kommen. Dieses Problem ist vermeidbar, indem Sie sorgfältig auf die Konfiguration der Namensauflösung auf dem Server achten.

Dieses Problem tritt auf, weil das Erstellen einer Sperre und das Löschen einer Sperre zwei leicht unterschiedliche Methoden der Namensauflösung verwenden. Es sind zwei Prozesse beteiligt: Der Network Lock Manager (NLM) und der NFS-Client. Der NLM verwendet uname n Um den Hostnamen zu ermitteln, während der rpc.statd Prozessanwendungen gethostbyname(). Diese Hostnamen müssen übereinstimmen, damit das Betriebssystem veraltete Sperren ordnungsgemäß löschen kann. Beispielsweise sucht der Host nach Sperren, die Eigentum von sind dbserver5, Aber die Schlösser wurden vom Host als registriert dbserver5.mydomain.org. Wenn gethostbyname() Gibt nicht denselben Wert zurück wie uname –a, Dann ist der Sperrvorgang nicht erfolgreich.

Mit dem folgenden Beispielskript wird überprüft, ob die Namensauflösung vollständig konsistent ist:

#! /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";

Wenn gethostbyname Stimmt nicht überein uname, Veraltete Sperren sind wahrscheinlich. Dieses Ergebnis zeigt beispielsweise ein potenzielles Problem auf:

uname -n yields: dbserver5
gethostbyname yields: dbserver5.mydomain.org

Die Lösung wird normalerweise durch Ändern der Reihenfolge gefunden, in der Hosts in angezeigt werden /etc/hosts. Nehmen wir beispielsweise an, dass die Hosts-Datei diesen Eintrag enthält:

10.156.110.201  dbserver5.mydomain.org dbserver5 loghost

Um dieses Problem zu beheben, ändern Sie die Reihenfolge, in der der vollständig qualifizierte Domänenname und der kurze Hostname angezeigt werden:

10.156.110.201  dbserver5 dbserver5.mydomain.org loghost

gethostbyname() Gibt nun den Short zurück dbserver5 Host-Name, der mit der Ausgabe von übereinstimmt uname. Sperren werden somit nach einem Serverabsturz automatisch gelöscht.