next Shared Server
up Fundamentals
previous Basiskonfiguration auf der Server-Seite
  Contents   Index

Subsections


Namensauflösung unter Oracle

Damit ein Client sich mit einer Datenbank verbinden kann, muss dieser den Namen der Datenbank auflösen können. Oracle stellt hierfür verschiedene Methoden zur Verfügung: In kleineren Organisationen wird meist das Local Naming oder Host Naming verwendet. Bei größeren Organisationsformen wird oft Directory Naming mittels LDAP-kompatiblen Directory Server eingesetzt.


sqlnet.ora

Welche der Methoden eingesetzt wird, ermittelt Oracle anhand der Datei sqlnet.ora.
# SQLNET.ORA Network Configuration File:
#   /oracle/ora92/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = testdb29.de
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
Gemäß den Einstellungen für NAMES.DIRECTORY_PATH würde gegenwärtig als erstes die Namensauflösung mit Hilfe von Local Naming, anschließend mit Hilfe eines Oracle Name Servers und als letztes durch Hostnaming durchgeführt werden.


Net Configuration Assistant

Möglichkeit wäre es die Konfigurationsdateien manuell zu editieren. Glücklicherweise stellt Oracle ein Tool zur Verfügung, welches diese Aufgabe übernimmt. Es handelt sich hierbei um den Net Configuration Assistant. Aufruf:
$ORACLE_HOME/bin/netca
Wenn Sie dieses Tool starten, müssen Sie als erstes auswählen, was Sie machen möchten. Zur Auswahl steht die Konfiguration des Listeners (auf dem Datenbankserver), die Konfiguration von Benennungsmethoden (in der sqlnet.ora), die Konfiguration des lokalen Net Service Names und das Einrichten eines zentralen Name-Servers. Beispiel:
  1. Konfiguration von lokalen Net Service Name
  2. Hinzufügen
  3. Oracle 9i-Datenbank
  4. Dienstname: testdb29
  5. Netzwerkprotokoll: TCP
  6. Host-Name: pinguin
    Standardport (1521)
  7. Verbindungstest
    Anmeldenamen: system oder sys
  8. Net Service Name: testdb29


Host Naming

Host Naming ermöglicht Benutzern in einer TCP/IP-Umgebung die Auflösung von Host-Namen mit Hilfe bestehender Dienste der Namensauflösung (DNS, /etc/hosts). Clients stellen die Verbindung mittels Host-Name zu einem Oracle Datenbank-Server über die Software Oracle Net Service Client her. Es kann nur eine SID pro Host-Name adressiert werden. Wenn mehrere SID pro Maschine angesprochen werden sollen, müssen jeweils eigene Host-Namen (Alias) für jede SID definiert werden.


Konfiguration auf der Server-Seite


sqlnet.ora :

In der sqlnet.ora wird HOSTNAME als Bennenungssystem definiert.
NAMES.DIRECTORY_PATH= (HOSTNAME, ...)


listener.ora :

Bei der Namensauflösung durch hostnaming wird davon ausgegangen, dass der globale Datenbankname in der listener.ora dem Hostname des Computers entspricht. Wenn zum Beispiel der Computer, der die Datenbank testdb29 hostet, pinguin heißt, so ist auch der globale Datenbankname pinguin.
# LISTENER.ORA Network Configuration File: 
#  /oracle/ora92/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = pinguin.tuxdorf.de)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/ora92)
      (PROGRAM = extproc)
    )
      (SID_DESC =
      (GLOBAL_DBNAME = pinguin.tuxdorf.de)
      (ORACLE_HOME = /oracle/ora92)
      (SID_NAME = testdb29)
    )
  )
Hinweis: Bei Veränderungen an der listener.ora muß der Listener-Dienst auch neu gestartet werden.
lsnrctl stop
lsnrctl start

Verbindungsaufbau vom Client

sqlplus system/mamanger@pinguin.tuxdorf.de


Local Naming

Local Naming ist die einfachste und wohl am meisten verbreitete Methode der Namensauflösung eines Clients.

Konfiguration auf der Server-Seite


sqlnet.ora :

In der sqlnet.ora wird TNSNAMES als Bennenungssystem definiert.
NAMES.DIRECTORY_PATH= (TNSNAMES ...)


listener.ora

# LISTENER.ORA Network Configuration File: 
#  /oracle/ora92/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = pinguin)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/ora92)
      (PROGRAM = extproc)
    )
      (SID_DESC =
      (GLOBAL_DBNAME = testdb29)
      (ORACLE_HOME = /oracle/ora92)
      (SID_NAME = testdb29)
    )


Konfiguration auf der Client-Seite


tnsnames.ora :

Bei der Namensauflösung mit Hilfe von Local Naming wird die Datei tnsnames.ora, in der die Verbindungsinformationen (Deskriptoren) stehen, benutzt.

Diese Datei befindet sich standardmäßig im Ordner $ORACLE_HOME/network/admin. Über die tnsnames.ora kann der Client ermitteln, auf welchem Rechner sich die Datenbank befindet und über welchen Port die Kommunikation durchgeführt werden soll.

testdb29.testdb29.de =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = pinguin)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testdb29)
    )
  )
Die Datenbank befindet sich auf einem Server namens pinguin. Sie können hier auch anstelle des Namens eine IP-Adresse eingeben. Die Verbindung zur Datenbank wird über den Port 1521 hergestellt. Über connect_data werden die Verbindungsdaten festgelegt. In unserem Beispiel handelt es sich um eine dedizierte Verbindung und der ServiceName der Datenbank auf dem Server ist testdb29. Der lokale NetServiceName ist in diesem Beispiel testdb29.testdb29.de. Das bedeutet, dass der Client bei der Verbindung dies als ServiceName eingeben muß.
sqlplus system/mamanger@testdb29.testdb29.de
Die korrekte Namensauflösung können Sie mit dem Programm tnsping testen. Hier wird nun überprüft, ob der ServiceName aufgelöst werden kann und das entsprechende Port offen ist.
tnsping testdb29.testdb29.de
...
OK


Oracle Name Server

Oracle Name Server ist eine zentralisierte Methode der Namensauflösung eines Clients.


sqlnet.ora

Voraussetzung für die Nutzung durch den Client ist natürlich der entsprechenden Eintrag in der sqlnet.ora.
NAMES.DIRECTORY_PATH= (ONAMES)
Bei der Namensauflösung mit Hilfe von Oracle Name Service wird neben dem NAMES.DIRECTORY_PATH=(ONAMES) auch noch ein bevorzugter Nameserver angegeben. Bei Auflösungsanfragen wird dann dieser Server gefragt.


Directory Naming

Löst den Namen eines Datenbankdienstes oder Net Service in einem Connect-Descriptor auf, der in einem zentralen LDAP-kompatiblen Directory-Server gespeichert ist.

Externe Benennung

Verwendet einen unterstützten Bennenungsdienst Dritter.


Dynamic Service Registration

PMON ist verantwortlich für das dynamische Registrieren von Diensten im Listener. Dynamic Service Registration wird in der Initialisierungsdatei der Datenbank konfiguriert. Eine Konfiguration der listener.ora ist hierfür nicht notwendig. Die Initialisierungsdatei der Datenbank sollte folgende Einträge beinhalten:
SERVICE_NAMES
INSTANCE_NAME

Übung Namensauflösung

Übungen siehe Seite [*].
next Shared Server
up Fundamentals
previous Basiskonfiguration auf der Server-Seite
  Contents   Index


Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de