KNOWLEDGE BASE

Festlegen einer Oracle-Verbindung für die Verwendung von TNSNames.ora oder LDAP.ora


Veröffentlicht: 29 Nov 2016
Zuletzt geändert am: 20 Jul 2023

Frage

Festlegen einer Oracle-Verbindung für die Verwendung von TNSNames.ora oder LDAP.ora


Vorteile zum Einstellen von TNSNames.ora- oder LDAP.ora-Verbindungen

Die folgenden häufigen Oracle-Fehler können korrigiert oder vermieden werden, indem Sie Ihre Datenverbindung dazu einstellen, TNSNames.ora oder LDAP.ora zu verwenden.
  • ORA-12154: TNS: could not resolve the connect identifier specified (Die angegebene Verbindungs-ID konnte nicht aufgelöst werden)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (TNS-Listener kann in Connect-Deskriptor angegebenen Service aktuell nicht auflösen)

  • ORA-12541: TNS: no listener (Kein Listener)

  • ORA-12170: TNS:Connect timeout occurred (Verbindungs-Timeout)

  • ORA-12504: TNS listener was not given the SERVICE_NAME in CONNECT_DATA (TNS-Listener hat SERVICE_NAME in CONNECT_DATA nicht erhalten)

Umgebung

  • Tableau Desktop
  • Tableau Server
  • Oracle

Antwort

ZUM ANZEIGEN DER LÖSUNG KLICKEN
Tableau Desktop und/oder Server unter Windows, OCI-Client

Schritt 1: Legen Sie die TNS_Admin-Umgebungsvariable fest.

  1. Wählen Sie „Start“ > „Systemsteuerung“ > „System“. 
  2. Wählen Sie „Erweiterte Systemeinstellungen“.
  3. Wählen Sie im Dialogfeld „Systemeigenschaften“ die Registerkarte „Erweitert“ und dann „Umgebungsvariablen“ aus. 
  4. Klicken Sie unter „Systemvariablen“ auf „Neu“. 
  5. Geben Sie im Dialogfeld „Neue Systemvariable“ Folgendes ein und klicken Sie dann auf OK: 
    • Variablenname: TNS_ADMIN 
    • Variablenwert: das Verzeichnis, in dem sich die „TNSNames.ora“-Datei befindet.
  6. Klicken Sie in den Dialogfeldern „Umgebungsvariablen“ und „Systemeigenschaften“ auf OK. 
  7. Starten Sie Ihren Computer neu, damit die neue Variable erkannt wird. 

Schritt 2: Verwenden Sie den Oracle Net Service-Namen, um in Tableau eine Verbindung zu Oracle herzustellen. 

  1. Schließen Sie alle Tableau-Arbeitsmappen und öffnen Sie eine neue Instanz von Tableau.
  2. Wählen Sie in Tableau Desktop „Verbindung zu Daten herstellen > Oracle“.
    • Geben Sie bei Server den erfassten Oracle-'net_service_name' in die „TNSNAmes.ora“-Datei ein.
    • Geben Sie den entsprechenden Benutzernamen und das Kennwort ein.

Die übrigen Verbindungsdetails aus der „TNSNames.ora“-Datei werden über die Systemvariable TNS_ADMIN kommuniziert. Beachten Sie, dass Sie keinen optionalen Dienstnamen und keine Portinformationen eingeben sollten, da diese Daten Probleme bei der Verbindung aufgrund duplizierter Informationen verursachen könnten.

ZUM ANZEIGEN DER LÖSUNG KLICKEN
Tableau Desktop und Server 2020.2 und neuer, Windows, JDBC Driver
 
Erstellen Sie eine Datei „oracle.properties“, die den folgenden Text enthält (Beispiel):

oracle.net.tns_admin=C:\\Oracle_Client\\network\\admin

Ändern Sie bei Bedarf den Pfad, um auf den Speicherort der Datei „tnsnames.ora“ im Host-Dateisystem zu verweisen. Die doppelten Backslashes \\ sind beabsichtigt und erforderlich, selbst wenn die \\-Pfade beim Kopieren und direkten Einfügen in den Windows Datei-Explorer nicht funktionieren. Die Datei „oracle.properties“ funktioniert in diesem Zusammenhang nur mit doppelten Backslashes richtig.

Legen Sie die Datei an folgendem Ort ab:
Desktop: Dokumente\Eigenes Tableau-Repository\Datenquellen 
Server: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (oder gleichwertiger Pfad, wenn ein alternativer Installationsort verwendet wird) Erstellen Sie den Ordner unbedingt, wenn er noch nicht vorhanden ist.

Nur Server: Nachdem die Dateien und Ordner erstellt wurden, statten Sie den „run as“-Benutzer mit den entsprechenden Berechtigungen für die Datei aus und starten Sie Tableau Server neu.

Weitere Informationen zu JDBC-Eigenschaftendateien finden Sie hier: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=de-de
 
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Unter Mac

Schritt 1:

  1. Schließen Sie Tableau Desktop, sofern es geöffnet ist. 
  2. Vergewissern Sie sich, dass Sie die Oracle-Treiber für Mac von der Seite Treiber in Tableau heruntergeladen und installiert haben.
  3. So kopieren Sie eine vorhandene LDAP.ora- oder TNSNames.ora-Datei mit Verbindungsinformationen in /etc: 
  • Wählen Sie im Finder „Gehe zu > Gehe zu Ordner“ aus und geben Sie „/etc“ ein.
  • Kopieren Sie die .ora-Datei in /etc.

Schritt 2: Konfigurieren Sie die TNS_ADMIN-Umgebungsvariable 

  1. Öffnen Sie die Terminal-Anwendung auf dem Mac-Computer und geben Sie den folgenden Befehl ein:

    sudo nano /etc/launchd.conf

    Hinweis: Nano ist ein textbasierter Editor, der auf sämtlichen Mac-Computern verfügbar ist.

  2. Geben Sie Ihr Kennwort ein, wenn Sie dazu aufgefordert werden.

  3. Geben Sie folgenden Befehl ein:

    launch setenv TNS_ADMIN /etc

  4. Drücken Sie Strg-X und dann Y und die Eingabetaste, um die Änderungen zu speichern und Nano zu beenden.
  5. Starten Sie Ihren Mac neu.

Schritt 3: Prüfen Sie, ob die Variable TNS_ADMIN festgelegt wurde: 

  1. Öffnen Sie die Terminal-Anwendung auf dem Mac-Computer und geben Sie den folgenden Befehl ein:

    export

  2. Ihnen wird eine Liste aller Systemvariablen angezeigt. Suchen Sie nach:

    declare -x TNS_ADMIN="/etc"

  3. Vergewissern Sie sich, dass die DNS-Auflösung für den in der .ora-Datei aufgeführten Hostnamen funktioniert, indem Sie den Hostnamen in Terminal oder Network Utility pingen. Verwenden Sie einen vollständig qualifizierten Domänennamen wie servername.domäne.com anstelle eines einfachen Servernamens. 
Sie sollten in der Lage sein, Tableau Desktop auf Ihrem Mac zu starten und eine Verbindung zur Oracle-Datenbank herzustellen, indem Sie lediglich den Servernamen aus der TNSNames.ora- oder LDAP.ora-Datei angeben. 
 
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Unter Linux

Zusammenfassung der Schritte:

  1. Kopieren Sie die tnsnames.ora Datei zu einem Speicherort, auf den der Tableau-Benutzer Zugriff hat
  2. Stellen Sie die Berechtigungen auf der Datei ein.
  3. Aktualisieren Sie falls nötig die TNS_ADMIN-Umgebungsvariable, sodass sie zum Directory in Schritt (1) weist.

Schritt 1: Kopieren Sie die tnsnames.ora Datei zu einem Directory, auf das der unbefugte Benutzer (Tableau) Zugriff hat.

Für Versionen 2019.3.x und höher:
Kopieren Sie die tnsnames.ora Datei zum /etc Directory.
Für Versionen 2019.2.x und früher:
Standardmäßig wird der unbefugte Benutzer 'Tableau' genannt. Alle Tableau Server-Prozesse, die mit diesem Konto ausgeführt werden, müssen dazu fähig sein, die tnsnames.ora Datei zu finden, um Sie zu verwenden.
Falls Sie den Oracle-Connector bereits installiert haben, empfehlen wir Ihnen, die Datei zum Directory /opt/tableau/tableau_driver/oracle zu kopieren.
Sie können bestätigen, dass das Directory dem Benutzer zugänglich ist, indem Sie 'su' verwenden, um zum Konto zu wechseln und zum Directory zu wechseln. Beispiel:
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
Falls diese Schritte in einem „Zugriff verweigert“ Fehler resultieren, müssen Sie die Berechtigungen im Directory, das Sie verwenden, updaten.

Schritt 2: Stellen Sie die Berechtigungen für die Datei „tnsnames.ora“ ein.

2019.2.x und früher, befolgen Sie die Schritte unten:
  1. Navigieren Sie zum Verzeichnis, in dem sich die Datei tnsnames.ora befindet.
  2. Gewähren Sie über den folgenden Befehl Berechtigungen für die Datei: chmod 666 tnsnames.ora
  3. Prüfen Sie die Dateiberechtigungen über folgenden Befehl: ls -l
Hinweis: Der Umgebungspfad sollte keinen nachgestellten Schrägstrich haben. Falls das Format des Pfads fehlerhaft ist, können Benutzer möglicherweise auf einen ORA-12154 Fehler stoßen.

2019.3 und neuer:
Platzieren Sie die tsnames.ora-Datei im /etc-Verzeichnis auf dem Linux-Computer. Keine Umgebungsvariable benötigt.

Version 2020.2 und neuer:

Erstellen Sie eine /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties-Datei mit dem folgenden Text:

Beispiel: oracle.net.tns_admin=/etc

Ändern Sie bei Bedarf den /etc-Pfad, um auf den Pfad der Datei „tnsnames.ora“ im Dateisystem auf Ihrem Server zu verweisen.

Weitere Informationen zu JDBC-Eigenschaftendateien finden Sie hier: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=de-de
 

Schritt 3: Stellen Sie die TNS_ADMIN-Umgebungsvariable so ein, dass sie zum Verzeichnis in Schritt (1) weist.

Für Versionen 2019.3.x und höher: Sie können diesen Schritt überspringen. Keine Umgebungsvariable wird erfordert.
Für Versionen 2019.2.x und früher:
  1. Öffnen Sie in einem Texteditor die Datei, die Ihrer Version von Tableau Server entspricht:
    • ​​​Tableau Server 2018.1.x - 2019.2 --  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. Fügen Sie die folgende Zeile hinzu, wo "/path/to/file-folder" das Directory ist, zu dem Sie tnsnames.ora in Schritt 1 kopiert haben:
    • Environment=TNS_ADMIN=/path/to/file-folder
  3. Speichen Sie die Änderungen an der Datei.

Hinweis: Der Umgebungspfad darf keinen nachgestellten Schrägstrich haben. Wenn das Format des Pfads nicht korrekt ist, können Benutzer einen ORA-12154-Fehler erhalten.

ZUM ANZEIGEN DER LÖSUNG KLICKEN
Alle Umgebungen

Optionale Schritte

Finden von tnsnames.ora Dateien

Falls der Oracle-Client auf Ihrem Server installiert ist, befindet sich die tnsnames.ora Datei im folgenden Verzeichnis: $ORACLE_HOME/network/admin.
Sie können mit den folgenden Befehlen überprüfen, ob diese Datei existiert:

echo $ORACLE_HOME 
druckt den Dateipfad aus.

sudo find / -iname tnsnames.ora
 listet die Speicherorte aller tnsnames.ora-Dateien in Ihrem Dateisystem auf.

Hinweis: Der Oracle-Client muss nicht installiert sein, um „tnsnames.ora“ mit Tableau Server zu verwenden. Dieser Schritt besteht, um Ihnen zu helfen mit einer bestehenden Installation zu arbeiten.

Eine neue tnsnames.ora Datei vom Beginn an erstellen

Falls keine tnsnames.ora Datei auf diesem Computer vorhanden ist und Sie keine aus einem Client-Arbeitsplatz kopieren können, können Sie diese mit einem Texteditor erstellen. Beachten Sie die folgenden Einschränkungen:

  • Bei der Datei „tnsnames.ora“ wird die Groß- und Kleinschreibung berücksichtigt, die Bezeichnung muss komplett in Kleinbuchstaben erfolgen. 

  • Die Datei sollte keine Tabulatorabstände verwenden.

Unten sehen Sie eine mögliche Vorlage für den Eintrag. Die Elemente in eckigen Klammern müssen durch Werte ersetzt werden, die Sie von Ihrem Datenbankadministrator erhalten.
Hinweis: Für die Datei „TNSNames.ora“ ist unter Windows oder Mac kein ADDRESS_LIST-Eintrag erforderlich. Unter Linux wird diese Variable in der Datei „tnsnames.ora“ allerdings benötigt.
 

[net_service_name]=
(DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=[protocol_address_information])
   )
  (CONNECT_DATA= 
    (SERVICE_NAME=[service_name])
   )
 )

Beispiel: 

Production =
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
   )
  (CONNECT_DATA = 
    (SERVICE_NAME = orcl)
   )
 )

 

Zusätzliche Informationen

Zusätzliche Konfigurationsschritte, wenn Sie SSL auf Oracle konfiguriert haben

ORACLE_HOME und TNS_ADMIN für Oracle konfigurieren (Mit SSL auf Oracle konfiguriert)

sudo su -l tableau
      touch /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "ORACLE_HOME=/u01/app/oracle/product/12.1.0/client_1" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "TNS_ADMIN=/u01/app/oracle/product/12.1.0/client_1/network/admin" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf 
      chmod 744 /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
exit

cd /opt/tableau/tableau_server/packages/scripts.near.xx.xxxx.xxxx/
            sudo ./stop-administrative-services
            sudo ./start-administrative-services
source /etc/profile.d/tableau_server.sh

Hat dieser Artikel das Problem gelöst?