Zu Oracle

Bereich:
Versionsinfo:
SQL, PL/SQL, DBA
7.0-11.2
Erstellung:
Letzte Überarbeitung:
01/2004 MP
08/2009 MP
 Als PDF Downloaden!

Der Ultimative TNSNAMES.ORA Guide

Einleitung:

Die Textdatei TNSNAMES.ORA verwendet der Oracle Client um sich an einer Oracle Datenbank anzumelden. Häufig besitzt auch der Oracle Server diese Datei, um sich an einem anderen Server anmelden zu könnnen (z.B. via Datenbank-Link).

Da ich schon WOCHEN meines Lebens mit der Fehlersuche verbracht habe, hier eine kleine Zusammenfassung
für alle die auch kurz vor der Verzweiflung sind.

Aufbau der Datei:

 <alias> =
   (DESCRIPTION =
      (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = <hostname>)(PORT = <port>))
      )
      (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = <service_name_der_db>)
      )
    )

 

Beschreibung der Parameter:
- hostname : Rechnername oder Ip-Adresse auf der Listener der Datenbank läuft
- port : Portnummer über der der Listener angesprochen werden kann
   (meist 1521 oder 1526)
- server = dedicated oder shared. Verbindungsmodi des Clients zur DB
- service_name = Servicename der DB (meist der Instanzname)

Beispiel:

 prod_db =
   (DESCRIPTION =
      (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
      )
      (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = prod)
      )
   )

Welche Aliasnamen sind zu empfehlen? Nehmen sie einen Namen, der eindeutig und leicht zu merken ist. Ideal: rechner_oraclesid Beispiel: myserver_prod_db Gängige Fehlerquellen (sortiert nach der Wahrscheinlichkeit ihres Auftretens): 1. Sie haben keinen Eintrag mit dem angegebenen Aliasnamen, oder haben ihn falsch geschrieben. Die Fehlermeldung lautet hier:

SQL> connect system/manager@prod_bp
ERROR:
ORA-12154: TNS: Angegebener Connect Identifier konnte nicht aufgelöst werden


Lösungen: Überprüfen Sie wiviele TNSNAMES.ORA Dateien sie auf dem gesamten Client
besitzen, die in einem network/admin Verzeichnis liegen (nicht samples) Evtl editieren Sie die falsche Datei im falschen Verzeichnis. Haben Sie nur eine Datei, dann prüfen Sie die Existenz des Alias-Namens Prüfen Sie, ob in der Datei sqlnet.ora (im gleichen Verzeichnis)
folgender Eintrag steht:
NAMES.DEFAULT_DOMAIN=<irgendeine_tolle_domaine.de>
z.B.: NAMES.DEFAULT_DOMAIN=muniqsoft.de
Wenn ja, fügen Sie bitte diesen Domain-Namen an den Alias-Namen
der TNSNAMES.ORA an:

prod_db.muniqsoft.de =
   (DESCRIPTION =
      (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
      )
      (CONNECT_DATA =
         (SERVER = DEDICATED)
         (SERVICE_NAME = prod)
      )
   )

 2. Der Service-Name passt nicht zur Datenbank. Prüfen Sie folgende
Parameter in der Datenbank:

 SQL> show parameter service_names
NAME          TYPE        VALUE
---------     ----------- -----------
service_names String      prod

SQL> show parameter db_domain
NAME      TYPE        VALUE
--------- ----------- -----------
db_domain String      muniqsoft.de

 Der Service-Name muss gesetzt werden auf <service_names>.<db_domain>
also hier:
prod.muniqsoft.de

3. Die Datenbank (oder der Dient unter Windows) wurde noch nicht
gestartet. Hier erscheint die Fehlermeldung:

SQL> connect system/manager@muso
ERROR:
ORA-12514: TNS: Listener kann in Connect-Deskriptor angegebenen Service
aktuell nicht auflösen

Lösung: Starten Sie die Datenbank bzw den Dienst

 dos> net start oracleserviceprod
dos><ORACLE_HOME>/bin/sqlplus "/ as sysdba"
sql> startup

4. Der Listener wurde nicht gestartet, oder ist abgestürzt. Die Fehlermeldung dazu:

SQL> connect system/manager@muso
ERROR:
ORA-12541: TNS: Kein Listener

Lösung: Starten Sie den Listener auf der Datenbank-Seite

dos/unix> <oracle_home>/lsnrctl start

Prüfen Sie, ob die Listener-Portnummer zum Eintrag in der TNSNAMES.ORA passt

Alternativen zur TNSNAMES.O

  • Easy Connect (ab 10.1) Hier kann auf die TNSNAMES.ORA komplett verzichtet werden. Die Anmeldung erfolgt in der Form:
  • <hostname|ip-adresse>:<portnummer>/<instanz>
  • Beispiel: myserver:1521/orcl
  • LDAP Konfiguration (etwas aufwendig)

Anmeldung in SQL*Plus mit DESCRIPTION String

dos/unix>sqlplus /nolog

Bitte alles in eine Zeile schreiben !

sql>connect system/manager@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = prod)))

 

 

 

Suche

Kontakt

Telefon:
  089 6228 6789-0

Telefon (noch gültig):
  089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.