Texte - Anleitungen - Datenbanken - Beachtenswertes für...
Beachtenswertes für TNSNAMES- und HOSTNAME-Auflösungsverfahren in Oracle 4. Dez. 2003 19:22
Um Servicenamen (der Name nach dem @ bei einem CONNECT Versuch) in Oracle aufzulösen, müssen ein oder mehrere Auflösungsverfahren konfiguriert werden.

CONNECT hr/hr@andererPC

Eine Möglichkeit für Oracle "andererPC" aufzulösen, besteht darin, einen kurzen Blick in die Datei tnsnames.ora zu werfen. Dabei sucht Oracle nach dem Wort "andererPC" in dieser Datei und holt sich die Verbindungsdaten zu diesem Servicenamen.
Eine andere Option an die Verbindungsdaten zu kommen, ist per Hostname-Auflösungsverfahren. Dabei wird ein DNS-Server kontaktiert bzw. in der hosts-Datei des Betriebssystems nachgeschlagen, um die nötigen Verbindungsdaten (wie z.b. IP) zu erhalten.

Welche der beiden Möglichkeiten verwendet wird, ergibt sich aus den Einstellungen in der Datei sqlnet.ora. Der Eintrag NAMES.DIRECTORY_PATH gibt Aufschluss darüber, welche Auflösungsverfahren herangezogen werden. "TNSNAMES" steht für die Methode, bei der man in der tnsnames.ora den Servicenamen sucht. "HOSTNAME" steht für den Hostname-Lookup per hosts-Datei oder DNS-Server.
Bei den Auflösungsverfahren ist unbedingt die Reihenfolge zu beachten. Denn genau in dieser Reihenfolge werden die Verfahren verwendet. Falls für die Auflösung eines Namens das erste Verfahren nichts finden kann, wird das zweite verwendet - bei nochmaligem Misserfolg, das dritte und so weiter.

Man muss besonders aufpassen, wenn an erster Stelle das HOSTNAME-Verfahren steht, denn hier kann es zu folgendem Szenario kommen:
Man konfiguriert einen Eintrag in der tnsnames.ora, um sich mit einem PC zu verbinden. Alles funktioniert bestens. Irgendwann aber (vielleicht nacht Wochen oder Monaten) klappt es nicht mehr - ohne, dass man etwas an der Konfiguration geändert hätte. Das kann daran liegen, dass ein PC mit dem Namen des Eintrags in der tnsnames.ora im Netzwerk hinzugefügt wurde, oder ein PC seinen Hostnamen geändert hat. Da wir in diesem Beispiel davon ausgehen, dass an erster Stelle das HOSTNAME-Verfahren herangezogen wird, wird der Name zwar aufgelöst werden können, aber der Verbindungsversuch kann fehlschlagen, weil die Konfiguration nicht dieselbe ist wie in der tnsnames.ora. Deshalb sollte man grundsätzlich das HOSTNAME-Verfahren eher als letzte Lookup-Methode konfigurieren, z.B.:

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)
Can Özdemir
eingereicht von Usher