KNOWLEDGE BASE

Fehler "ORA-12154" bei der Verbindung zu Oracle ohne Verwendung von TNSNames.ora


Veröffentlicht: 01 Aug 2014
Zuletzt geändert am: 24 Aug 2022

Problem

Wenn Sie eine Oracle-Verbindung verwenden, die auf einem Computer erstellt wurde, der LDAP, TNSNAMES oder EZCONNECT verwendet oder bei dem alle drei Verbindungsparameter (Server, Service und Port) während der ersten Verbindung konfiguriert wurden, funktioniert die Verbindung nicht mehr und es kann der folgende Fehler auftreten:

"Oracle database error 12154: ORA-12154: TNS:could not resolve the connect identifier specified" (Oracle-Datenbankfehler 12154: ORA-12154: TNS: Die angegebene Verbindungs-ID konnte nicht aufgelöst werden)

Wenn Sie versuchen, mithilfe des Dienstnamens aus der Datei "TNSNames.ora" im Parameter Server eine Verbindung zur selben Oracle-Datenbank herzustellen, und die anderen zwei Parameter leer lassen, ist die Verbindung erfolgreich.

Dieses Verhalten kann bei folgenden Aktionen auftreten:
  • Freigeben von Arbeitsmappen zwischen Computern mit Tableau Desktop, wobei einer davon über die oben genannten Konfigurationsdateien verfügt und der andere nicht.
  • Veröffentlichen einer Direktverbindung in Oracle auf einem Computer mit Tableau Desktop, der eine der oben genannten Konfigurationsdateien für eine Instanz von Tableau Server verwendet, für die dies nicht der Fall ist. (Wenn die Verbindung als Extrakt veröffentlicht wird, funktioniert dies. Es erfolgt jedoch keine Aktualisierung.)

Umgebung

  • Tableau Server
  • Tableau Desktop
  • Oracle

Lösung

Option 1:

Arbeiten Sie mit Ihrem Oracle-Datenbankadministrator zusammen, um den HOSTNAME-Verbindungstyp für den Oracle-Client auf dem Computer zu ermöglichen, auf dem Tableau Desktop oder Tableau Server ausgeführt wird.

Option 2:

Die folgende Problemumgehung kann den HOSTNAME-Verbindungstyp erlauben:

  1. Suchen Sie auf dem Computer, auf dem Tableau Desktop oder Tableau Server ausgeführt wird, nach der Datei sqlnet.ora. Der Ordner mit der Datei sollte in der Variable TNS_ADMIN angegeben sein und auch die Datei TNSNames.ora enthalten. Weitere Informationen finden Sie unter "Einstellen der TNS_Admin-Umgebungsvariablen" in Einrichten einer Oracle-Verbindung zwecks Verwendung von TNSNames.ora und Sqlnet.ora in den häufig gestellten Fragen zu Oracle.
    Hinweis: Erstellen Sie die Datei "sqlnet.ora", wenn der Ordner diese nicht enthält.
  2. Ergänzen Sie in der Datei "sqlnet.ora" die Zeile NAMES.DIRECTORY_PATH um Folgendes oder fügen Sie der Datei "sqlnet.ora" die folgende Zeile hinzu: 
    NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, HOSTNAME)
Hinweis: Wenn dieses Problem in einer verteilten Tableau Server-Umgebung auftritt, sollten Sie die obigen Schritte auf allen Computern in der Tableau Server-Installation ausführen. Fügen Sie den Dienstnamen und die Portnummer ein, verwenden Sie den vollqualifizierten Domänennamen im Textfeld "Server" des Verbindungsdialogfeldes.

Ursache

Die Datei "sqlnet.ora" erlaubt dem Oracle-Treiber nicht, mithilfe aller drei Verbindungsparameter nach der Datenbank zu suchen.

Wenn "TNSNAMES.ora" oder "LDAP.ora" verwendet wird, sind Oracle-Verbindungen zulässig und die zugehörigen Parameter können außerhalb des Tableau-Connectors definiert werden. Der Teil "net_service_name" wird als Serverfeld verwendet, das, sofern er zusammen mit Anmeldeinformationen eingegeben wird, den Dienstnamen und die Portnummer aus der TNSNAMES/LDAP-Datei abruft. Bei Computern ohne TNSNAMES/LDAP müssen Dienstname und Portnummer eingegeben werden, damit die Verbindung funktioniert. Zudem muss ein vollständig qualifizierter Domänenname für den Server anstelle eines benutzerdefinierten Namens verwendet werden (z. B.: "oracle.test.tsi.lan" ist der vollständig qualifizierte Domänenname, während "Oracle_01" als net_service_name verwendet werden könnte).
Hat dieser Artikel das Problem gelöst?