Oracle TNS-Namen werden beim Hinzufügen einer neuen Verbindung zu SQL Developer nicht angezeigt

93

Ich versuche, mit SQL Developer eine Verbindung zu einer Oracle-Datenbank herzustellen.

Ich habe die .Net Oracle-Treiber installiert und die tnsnames.oraDatei bei platziert
C:\Oracle\product\11.1.0\client_1\Network\Admin

Ich verwende das folgende Format in tnsnames.ora:

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

Wenn ich in SQL Developer versuche, eine neue Verbindung herzustellen, werden keine TNS-Namen als Optionen angezeigt.

Fehlt mir etwas?

Americus
quelle

Antworten:

176

SQL Developer sucht an der folgenden Stelle in dieser Reihenfolge nach einer Datei tnsnames.ora

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. TNS_ADMIN-Suchschlüssel in der Registrierung
  4. /etc/tnsnames.ora (Nicht-Windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Geben Sie den Befehl show tnsim Arbeitsblatt ein, um festzustellen, welcher SQL-Entwickler verwendet

Wenn Ihre Datei tnsnames.ora nicht erkannt wird, gehen Sie wie folgt vor:

  1. Definieren Sie eine Umgebungsvariable namens TNS_ADMIN , die auf den Ordner verweist, der Ihre Datei tnsnames.ora enthält.

    In Windows navigieren Sie dazu zu Systemsteuerung > System > Erweiterte Systemeinstellungen > Umgebungsvariablen ...

    Definieren Sie unter Linux die Variable TNS_ADMIN in der Profildatei in Ihrem Home-Verzeichnis.

  2. Stellen Sie sicher, dass das Betriebssystem diese Umgebungsvariable erkennt

    Über die Windows-Befehlszeile: echo% TNS_ADMIN%

    Unter Linux: echo $ TNS_ADMIN

  3. Starten Sie SQL Developer neu

  4. Jetzt in SQL Developer rechts auf klicken Connections und wählen Sie Neue Verbindung ... . Wählen Sie im Dropdown-Feld TNS als Verbindungstyp aus. Ihre Einträge von tnsnames.ora sollten jetzt hier angezeigt werden.
JaseAnderson
quelle
1
Für mich: $ HOME / .tnsnames.ora hat nicht funktioniert ... Ich habe stattdessen $ HOME / tnsnames.ora verwendet. Beachten Sie auch: Sie müssen zu Extras -> Einstellungen gehen, nach "tns" suchen und das Verzeichnis auf $ HOME
Ryan Delucchi
Obwohl dies in den Versionshinweisen für die SQL Developer 1.5-Version enthalten ist, stellte ich fest, dass unter Ubuntu 12.04 LTS nur # 5 funktioniert . Versuchen Sie diese Schritte, um zu überprüfen, ob dies Ihr Fall ist: forums.oracle.com/message/2769285#2769285 . Bemerkenswert : Der Autor hatte das Problem unter Win Vista.
LAFK sagt Reinstate Monica
Arbeitete für mich in Windows. Dinge für immer protokollieren FTW!
Isaac
Das Einstellen von TNS_ADMIN hat bei mir nicht funktioniert. Stattdessen habe ich den Computer nach allen TNSNAMES-Dateien durchsucht und deren Inhalt aktualisiert. Keine Ahnung, warum Windows 7 SQL Developer weiterhin eine andere TNSNAMES-Datei in einem alten Ordner verwendet.
Ben
1
Hinweis: $TNS_ADMINIst das .ora
VERZEICHNIS
30

Öffnen Sie SQL Developer. Gehen Sie zu Extras -> Einstellungen -> Datenbanken -> Erweitert. Legen Sie dann das Tnsnames-Verzeichnis explizit fest

Mein TNSNAMES war korrekt eingerichtet und ich konnte eine Verbindung zu Toad, SQL * Plus usw. herstellen, musste dies jedoch tun, damit SQL Developer funktioniert. Vielleicht war es ein Win 7-Problem, da die Installation ebenfalls schwierig war.

Paul Mattey
quelle
Akzeptierte Antwort hat bei mir nicht funktioniert, aber das hat funktioniert (Windows Server 2008R2)
Josh Werts
Hatte das gleiche Problem, aber SQL Developer hat auch in% userprofile% \ tnsnames.ora vor% TNS_ADMIN% \ tnsnames.ora gesucht, und dort hatte ich die zusätzliche Datei tnsnames.ora.
MBWise
15

Durchsuchen Sie in SQLDeveloperTools --> Preferences , wie in der folgenden Abbildung gezeigt.

Geben Sie hier die Bildbeschreibung ein

In den Einstellungen , in expand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directorydenen tnsnames.ora vorhanden ist.
Klicken Sie dann auf OK .
wie in der folgenden Abbildung gezeigt.

Geben Sie hier die Bildbeschreibung ein

Du hast gemacht!

Jetzt können Sie über die TNSnames- Optionen eine Verbindung herstellen.

Chandra Sekhar
quelle
"Databse: Advanced" kann nicht gefunden werden ==> meine Version ist 1.5.5
Tarek El-Mallah
1
Für Versionen unter 2.1 oder wenn Sie in 2.1 oder höher kein Tnsnames-Verzeichnis angegeben haben, fallen Sie bitte wie in der Antwort von @JasonAnderson angegeben brach .
Chandra Sekhar
Ich habe keine Tnsnames Directory-Option im Menü Extras-> Einstellungen-> Datenbanken-> Erweiterte Parameter. Ich benutze SqlDeveloper v1.1.3
Ahmedov
14

Sie können jederzeit den Speicherort der verwendeten Datei tnsnames.ora ermitteln, indem Sie TNSPING ausführen, um die Konnektivität zu überprüfen (9i oder höher):

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

Manchmal liegt das Problem bei dem Eintrag, den Sie in tnsnames.ora vorgenommen haben, nicht darin, dass das System ihn nicht finden kann. Trotzdem stimme ich zu, dass das Setzen einer Umgebungsvariablen tns_admin eine gute Sache ist, da dadurch die unvermeidlichen Probleme vermieden werden, die auftreten, wenn genau bestimmt wird, welche tnsnames-Datei in Systemen mit mehreren Oracle-Häusern verwendet wird.

DCookie
quelle
Wie kann ich das TNSPING-Tool installieren?
Kiquenet
In der Client-Installation gibt es ein Kontrollkästchen für Datenbank-Tools oder ähnliches.
DCookie
2

Die von Jason erwähnten Schritte sind sehr gut und sollten funktionieren. Bei SQL Developer gibt es jedoch eine kleine Wendung. Beim ersten Lesen der Datei tnsnames.ora werden die Verbindungsspezifikationen (Host, Dienstname, Port) zwischengespeichert. Dann werden die Spezifikationen nicht ungültig, wenn der ursprüngliche Eintrag aus der Datei tnsname.ora entfernt wird. Der Cache bleibt auch nach Beendigung und Neustart von SQL Developer bestehen. Dies ist keine so unlogische Art, mit der Situation umzugehen. Auch wenn eine tnsnames.ora-Datei vorübergehend nicht verfügbar ist, kann SQL Developer die Verbindung herstellen, solange die ursprünglichen Spezifikationen noch zutreffen. Das Problem kommt mit ihrer nächsten kleinen Wendung. SQL Developer behandelt Dienstnamen in der Datei tnsnames.ora beim Auflösen der Verbindung als Werte, bei denen zwischen Groß- und Kleinschreibung unterschieden wird. Wenn Sie also früher einen Eintragsnamen ABCD hatten. world in der Datei und Sie haben sie durch einen neuen Eintrag mit dem Namen abcd.world ersetzt. SQL Developer würde seine Verbindungsspezifikationen für ABCD.world NICHT aktualisieren. Abcd.world wird insgesamt als eine andere Verbindung behandelt. Warum wundert es mich nicht, dass ein Oracle-Produkt den Inhalt eines von Oracle entwickelten Dateiformats, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, als Groß- und Kleinschreibung behandelt?

Allan Stewart
quelle
@allen: Weißt du, wie man es zwingt, diese Liste zu löschen? Wenn ja, antworten Sie bitte auf stackoverflow.com/q/6412559/168646
David Oneill
1

Navigieren Sie in SQL Developer zu Extras-> Einstellungen-> Datenbanken-> Erweitert-> Verzeichnis Tnsname auf das Verzeichnis setzen, das tnsnames.ora enthält

B Chowdhary
quelle
0

Keine der oben genannten Änderungen hat in meinem Fall einen Unterschied gemacht. Ich konnte TNS_PING im Befehlsfenster ausführen, aber SQL Developer konnte nicht herausfinden, wo sich tnsnames.ora befand.

Das Problem in meinem Fall (Windows 7 - 64 Bit - Enterprise) war, dass das Oracle-Installationsprogramm die Verknüpfung zum Startmenü auf die falsche Version von SQL Developer verwies. Es scheint drei SQL Developer-Instanzen zu geben, die dem Installationsprogramm beiliegen. Eine befindet sich in% ORACLE_HOME% \ client_1 \ sqldeveloper \ und zwei in% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Das Installationsprogramm installierte eine Verknüpfung zum Startmenü, die auf eine Version im bin-Verzeichnis zeigte, die einfach nicht funktionierte. Bei jedem Start von SQL Developer wurde nach einem Kennwort gefragt. Ich erinnere mich nicht an die von mir getroffenen Entscheidungen und zeigte eine leere Liste an, als ich TNS als Verbindungsmechanismus auswählte. Das Feld TNS-Verzeichnis in den erweiterten Datenbankeinstellungen, auf die in anderen Beiträgen verwiesen wird, ist ebenfalls nicht vorhanden.

Ich warf die alte Startverknüpfung weg und installierte eine Verknüpfung zu% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Diese Änderung hat das Problem in meinem Fall behoben.

Michael
quelle