it-swarm.com.de

Oracle ORA-12154: TNS: Dienstname konnte nicht aufgelöst werden. Fehler?

Ich bin ein SQL Server-Benutzer.

Ich arbeite an einem Projekt, das Oracle verwendet (was ich selten verwende) Ich muss eine ODBC -Verbindung erstellen, damit ich auf die Daten über MS Access .__ zugreifen kann. Ich habe eine Anwendung, die auf meinem Computer aufgerufen wird oraHome90. Es scheint, eine Konfiguration von etwas, das als Listener in einem "Netzkonfigurationsprogramm" bezeichnet wird, zuzulassen. Ich denke, dass auch eine "Local Net Service Name Configuration" vorgenommen werden muss. Der IT-Support gab mir diese Informationen, um die ODBC -Verbindung aufzubauen. Ich habe jede Kombination ausprobiert, die mir einfällt. Ich kann einen Test bestehen, der erfolgreich einen Test besteht, um sich bei der Oracle-Serverdatenbank anzumelden. Wenn ich versuche, die Verbindung ODBC zu erstellen, wird die folgende Fehlermeldung angezeigt: ORA-12154: TNS: Dienstname konnte nicht aufgelöst werden.

Angenommen, ich möchte bei Null anfangen und die folgenden Informationen sollen es mir ermöglichen, eine Verbindung zur Datenbank herzustellen ... Irgendwelche Vorschläge oder Kommentare? Hinweis: Letztendlich wird das Projekt eine Website haben .ASP-Seite, die die Daten abfragt, aber ich muss zuerst beweisen, dass ich die Daten mit der Verbindung ODBC über MS Access sehen kann

Service name: SERVICENAME
Host = Host.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Oracle Connection
Dim ocst
Dim oconn

ocst = "Provider=OraOLEDB.Oracle;" & _ 
        "Data Source=DATASOURCE;" & _ 
        "User ID=CHIJXL;" & _ 
        "Password=password;" 

set oconn = CreateObject("ADODB.Connection")
13
Joe

von http://ora-12154.ora-code.com

ORA-12154: TNS: Die angegebene Verbindungs-ID konnte nicht aufgelöst werden
Ursache: Eine Verbindung zu einer Datenbank oder einem anderen Dienst wurde unter Verwendung einer Verbindungskennung angefordert, und die angegebene Verbindungskennung konnte nicht mit einer der konfigurierten Namensmethoden in einen Verbindungsdeskriptor aufgelöst werden. Wenn der Typ der Verbindungskennung beispielsweise ein Netzdienstname war, konnte der Netzdienstname nicht in einem Repository für Benennungsmethoden gefunden werden oder das Repository konnte nicht gefunden oder erreicht werden.
Aktion

  • Wenn Sie eine lokale Benennung (TNSNAMES.ORA-Datei) verwenden:

  • Stellen Sie sicher, dass "TNSNAMES" als einer der Werte des Parameters NAMES.DIRECTORY_PATH im Oracle Net-Profil (SQLNET.ORA) aufgeführt ist.

  • Stellen Sie sicher, dass eine TNSNAMES.ORA-Datei vorhanden ist und sich im richtigen Verzeichnis befindet und auf das zugegriffen werden kann.

  • Stellen Sie sicher, dass der als Verbindungsbezeichner verwendete Netzdienstname in der Datei TNSNAMES.ORA vorhanden ist.

  • Stellen Sie sicher, dass in der Datei TNSNAMES.ORA nirgends Syntaxfehler vorhanden sind. Suchen Sie nach nicht übereinstimmenden Klammern oder streunenden Zeichen. Fehler in einer TNSNAMES.ORA-Datei machen es möglicherweise unbrauchbar.

  • Wenn Sie Verzeichnisnamen verwenden:

  • Stellen Sie sicher, dass "LDAP" als einer der Werte des Parameters NAMES.DIRETORY_PATH im Oracle Net-Profil (SQLNET.ORA) aufgeführt ist.

  • Stellen Sie sicher, dass der LDAP-Verzeichnisserver aktiv ist und auf ihn zugegriffen werden kann.

  • Stellen Sie sicher, dass der als Verbindungsbezeichner verwendete Netzdienstname oder Datenbankname im Verzeichnis konfiguriert ist.

  • Vergewissern Sie sich, dass der verwendete Standardkontext korrekt ist, indem Sie einen vollständig qualifizierten Netzdienstnamen oder einen vollständigen LDAP-DN als Verbindungskennung angeben

  • Wenn Sie eine einfache Verbindungsbenennung verwenden:

  • Stellen Sie sicher, dass "EZCONNECT" als einer der Werte des Parameters NAMES.DIRETORY_PATH im Oracle Net-Profil (SQLNET.ORA) aufgeführt ist.

  • Stellen Sie sicher, dass der angegebene Host, der Port und der angegebene Name korrekt sind.

  • Versuchen Sie, die Verbindungskennung in Anführungszeichen zu setzen. Weitere Informationen zum Benennen finden Sie im Oracle Net Services-Administratorhandbuch oder im Oracle-Betriebssystem-spezifischen Handbuch.

8
warren

Wenn Sie davon ausgehen, dass Sie die TNSNAMES-Benennung verwenden, sollten Sie Folgendes tun:

  • Erstellen/ändern Sie die Datei tnsnames.ora im mit OraHome90 verknüpften network/admin-Unterverzeichnis, um einen Eintrag für Ihre Oracle-Datenbank hinzuzufügen:
> SERVICENAME_alias =
>    (DESCRIPTION =
>     (ADDRESS = (PROTOCOL = TCP)(Host = Host.XYZi.com)(PORT = 1521))
>     (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))

Es wird davon ausgegangen, dass Sie den standardmäßigen Oracle-Port 1521 verwenden. Beachten Sie, dass für servicename_alias ein beliebiger Name verwendet werden kann, den Sie auf dem lokalen System verwenden möchten. Möglicherweise müssen Sie auch angeben (SID = SERVICENAME) anstelle von (SERVICENAME = SERVICENAME).

  • Führen Sie tnsping servicename_alias aus, um die Konnektivität zu überprüfen. Holen Sie sich diese Arbeit, bevor Sie fortfahren. Dies sagt Ihnen, wenn Sie den Fehler 12154 hinter sich haben.
  • Wenn Sie eine gute Verbindung voraussetzen, erstellen Sie einen DSN ODBC über das Steuerungsfeld und geben Sie den ODBC - Treiber für Oracle Ihrer Wahl an (in der Regel gibt es mindestens einen Microsoft ODBC - Treiber, der ordnungsgemäß funktionieren sollte als Proof of Concept). Ich werde den Namen annehmen, den Sie von DATASOURCE gegeben haben. Verwenden Sie den Servicename_alias als Servernamen in der Konfiguration ODBC.
  • An diesem Punkt sollten Sie über Access eine Verbindung zu Ihrer Datenbank herstellen können. Ich bin kein VB -Programmierer, aber ich weiß, dass Sie in der Lage sein sollten, unter File-> Get External Data-> Link Tables einen Link zu Ihrer ODBC -Quelle herzustellen. Ich würde davon ausgehen, dass Ihr Code auch funktionieren würde.
5
DCookie

In Bezug auf # 7 in diesem MSDN POST funktionierte das Hinzufügen eines Registrierungseintrags für mich. Ich hatte Vs2010 und Oracle 11.0 installiert.

Suchen Sie unter HKEY_LOCAL_MACHINE\SOFTWARE\Oracle nach dem Registrierungsschlüssel "TNS_ADMIN". Wenn es existiert, stellen Sie sicher, dass es .__ hat. den richtigen Wert als "Dir:\app\product\11.1.0\client_1\network\admin" . Wenn Sie den Schlüssel nicht sehen, erstellen Sie den Schlüssel und legen Sie den entsprechenden Wert fest wie nachstehend. Regedit-> HKEY_LOCAL_MACHINE-> Software-> Oracle-> RightClick NEW-> StringValue und benennen Sie es TNS_ADMIN und geben Sie den Wert "X:\app\product\11.1.0\client_1\network\admin"

4
guiomie

Ich hatte Schwierigkeiten, dieses Problem stundenlang zu lösen, bis ich eine Umgebungsvariable namens TNS_ADMIN gefunden habe, die unter Arbeitsplatz => Eigenschaften => Erweitert => Umgebungsvariablen => in den Systemvariablen nach einem Eintrag namens TNS_ADMIN gesucht wurde. TNS_ADMIN wurde hinzugefügt, um den Standardpfad für den Eintrag Tnsnames.ora zu ändern. Dies ist nützlich, wenn er in einer Netzwerkumgebung verwendet wird, in der ein generischer Eintrag tnsnames.ora für alle Netzwerkcomputer eingerichtet werden kann Schauen Sie sich den Standardpfad von tnsnames.ora an. Fügen Sie den Standardpfad in TNS_ADMIN hinzu.

3
Anto

@Warren und @DCookie haben die Lösung behandelt. Eine Sache, die hervorzuheben ist, ist die Verwendung von tnsping. Sie können dies verwenden, um zu überprüfen, ob Ihre TNSNames korrekt sind, bevor Sie eine Verbindung herstellen.

Wenn Sie tnsnames richtig eingerichtet haben, können Sie ODBC verwenden oder TOra versuchen, um Ihre native Oracle-Verbindung zu verwenden. TOra oder etwas Ähnliches (TOAD, SQL * Plus usw.) ist für das Debugging und die Verbesserung Ihrer SQL von unschätzbarem Wert.

Wenn Sie sich schließlich mit ASP.net verbinden, denken Sie daran, dass Sie die Oracle-Datenverbindungsbibliotheken verwenden können. Siehe Oracle.com für einen Host von Ressourcen.

2
Mark Nold

Wenn sich am Anfang des in der Datei tnsnames.ora definierten tns-Namens ein Leerzeichen befindet, können einige Connectors wie odbc zu diesem Fehler führen. Entferne das Leerzeichen am Anfang.

1
Sertan

Es hat nichts mit einem in die Ordnerstruktur eingebetteten Platz zu tun.

Ich hatte das gleiche Problem. Als ich jedoch eine Umgebungsvariable (auf System- und Benutzerebene definiert) mit dem Namen TNS_HOME erstellt habe, die auf den Ordner verweist, in dem TNSNAMES.ORA vorhanden war, wurde das Problem behoben. Voila!

venki

1
Venki

Ich hatte das gleiche Problem und der gleiche Fehler wurde angezeigt. Meine TNSNAMES: ORA-Datei war auch gut zu gehen, aber anscheinend gab es ein Problem, weil die Firewall den Zugriff blockierte. SO Ein guter Tipp wäre, sicherzustellen, dass die Firewall den Zugriff auf die Datenquelle nicht blockiert. 

1
khizer jalal

Ich habe auch dieses Problem erfahren. Ich entdeckte das Problem, weil Oracle DB den Speicherplatz in C: program files (x86)\Toad ...... nicht mag. Also habe ich ein neues Verzeichnis mit dem Namen C: App\Toad erstellt und anschließend neu installiert, um Toad mit Oracle zu verbinden . Es funktionierte.

1
Law

Arrhhh !! ICH WIEDER IN DIESE WIEDER !!!

Installieren Sie einfach ToadForOracle in C:\oder ein beliebiges Verzeichnis ohne Klammern im Pfad.


In meinem Fall, weil ich auf einem x64-PC war und immer noch das alte Oracle 9i mit den 32-Bit-Treibern verwendete!

Ich verwende SQL Reporting Services mit einer Oracle-Datenbank. Das Problem sind die Klammern im Pfad zu Visual Studio (BIDS). Oracle mag keine Apps, die in einem Pfad mit Klammern beginnen:

RDBMS 10g XE-Problem mit Klammern im Pfad

Also habe ich eine BAT-Datei erstellt, um Visual Studio mit Progra ~ 2 als kurzen Pfadnamen für "Programme (x86)" zu öffnen.

Hier ist der Inhalt der BAT-Datei:

rem Progra~2 is short path name for "Program Files (x86)" and works around an Oracle client bug that doesn't like the ()'s in the path
start /B "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE" "C:\Progra~2\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

Ich benenne diese BAT-Datei StartBIDS.BAT und lege sie in das Verzeichnis: 

"C:\Programme\Microsoft SQL Server\BIDS.bat starten"

Dann mache ich eine Verknüpfung zur BAT-Datei auf meinem Desktop und auch zu meinem Startmenü und ändere das ShortCuts-Symbol. Dadurch kann ich TOAD-, Visual Studio-, BIDS- und andere Apps öffnen, die ich für die Zusammenarbeit mit Oracle verwende.

Update:

Alternativ machen Sie eine Kreuzung: 

mklink /J "C:\Program Files (x86)\" "C:\Program Files x86\"

Entfernen Sie dann die Klammern in der Verknüpfung:

 enter image description here

1
Jeremy Thompson

Wir haben unsere Probleme gelöst, indem Sie den Oracle Database Client erneut installiert haben. Irgendwie war die Installation auf einer der Workstations nicht erfolgreich (obwohl keine Protokollierung erfolgte). Beim Vergleich von Größe/Dateien/Ordnern des Oracle-Verzeichnisses mit einer funktionierenden Client-Workstation fehlte jedoch eine beträchtliche Anzahl von Dateien. Nachdem wir eine saubere Installation durchgeführt hatten, funktionierte alles perfekt. 

0
Austin

Wenn Sie einen 32-Bit-DSN und einen 64-Bit-DSN mit denselben Namen haben, wählt Windows automatisch den 64-Bit-DSN aus. Wenn Ihre Anwendung 32-Bit ist, wird dieser Fehler angezeigt. Passen Sie einfach darauf auf.

0
Muhamed Krlić

In meinem Fall liegt der Fehler darin, dass ich zwei Oracle-Clients hat. Es ist die Lösung:

Oracle ORA-12154-Fehler auf lokalem IIS, jedoch nicht mit Visual Studio Development Server

0

Ich habe dieses Problem mit diesen Schritten behoben. 

Zunächst trat dieser Fehler auf, wenn Sie dasselbe Verzeichnis oder Laufwerk nicht installiert haben. 

Aber die Antwort ist hier. 

  1. Melden Sie sich als Adminstrator an.
  2. Gehen Sie zur Systemsteuerung.
  3. Systemeigenschaften und klicken Sie auf Umgebung
  4. Suchen Sie die Betriebssystemvariable und ändern Sie den Namen als "TNS_ADMIN".

     enter image description here

  5. Und ändern Sie den Wert als "tnsnames Verzeichnisadresse"  enter image description here

  6. Starten Sie das System neu. 

  7. Glückwünsche. 
0
aemre

Ich verbringe nur eine Stunde damit, ich bin neu bei Oracle, also war ich völlig durcheinander. 

die Situation:

soeben installierte Visual Studio 2012 Oracle-Entwicklerwerkzeuge. Als ich dies tat, verlor ich die Elemente in meiner Dropdown-Liste, die meine TNS-Einträge in TOAD enthielten. Ich habe diesen Fehler von Visual Studio AND TOAD bekommen !! WTH! Also fügte ich die Umgebungsvariable TNS_ADMIN unter "ALL USERS" mit dem Pfad zu meiner .ora-Datei hinzu (die ich nun gut funktionierte, weil sie funktionierte, bis ich sie kaputt machte). Toad nahm diese Änderung auf. Trotzdem würde Visual Studio mir keine Liebe geben ... immer noch den gleichen Fehler. DANN habe ich die Umgebungsvariable MEINER USER-VARIABLEN hinzugefügt. VIOLA !! 

SICHERSTELLEN, DASS DIE UMWELTVARIABLEN FÜR DAS SYSTEM UND DEN BENUTZER EINGESTELLT SIND

0
hanzolo

Ich habe dieses Problem durch Entfernen von sqlnet.ora aus dem Pfad C:\Oracle\ora92\network\ADMIN behoben 

  • Stellen Sie sicher, dass die Datei TNSNAMES.ORA im richtigen Verzeichnis vorhanden ist
  • Stellen Sie sicher, dass die Umgebungsvariable PATH einen Eintrag für Oracle hat
  • Stellen Sie sicher, dass keine Syntaxprobleme in TNSNAMES.ORA auftreten
  • Entfernen Sie die Datei sqlnet.ora
0
Nalluswamy K

Stunden von Problemen gelöst. Ich hatte das Beta Entity Framework für Oracle installiert und in Visual Studio 2010 MVC 3-Projekt habe ich unter dem Tab .NET den Oracle.DataAccess referenziert. ." Error. Ich habe schließlich nur die vorherige Oracle-Installation unter c:\Oracle\product .... mit der alten Version 10.2.0.100 der DLL aufgerufen. Endlich klappt es jetzt. Hoffe es hilft jemand anderem.

0
Tom Stickel

Starten Sie nur die SID-Dienste neu. Wenn Sie beispielsweise SID name = orcl verwenden, werden alle Dienste, die sich auf orcl bezogen haben, neu gestartet. Ihr Problem wird dann gelöst

0
user2689022

Ich hatte dieses Problem wegen eines Tippfehlers im Dateinamen tnsnames.ora anstelle von tnsnames.ora

0
Ken

Dies wurde in einem Kommentar zu einer anderen Antwort erwähnt, aber ich wollte es auf eine tatsächliche Antwort verschieben, da dies auch das Problem in meinem Fall war und ich hätte es bestätigt, wenn es eine Antwort wäre.

Ich bin unter Linux und die Datei tnsnames.ora war nicht für jeden lesbar eingestellt. Nachdem es lesbar gemacht wurde, funktionierte die Verbindung über tns lokal.

$ chmod +r tnsnames.ora
0
stantont

Wir hatten auch ein ähnliches Problem. Was wir herausgefunden haben, dass wir mehrere Aliasnamen für unsere Verbindungszeichenfolge in tnsnames.ora bereitgestellt haben, etwa:

svc01, svc02 = (DESCRIPTION = (ADRESSE = (PROTOCOL = TCP) (Host = xxxx) (Port = 50)) (CONNECT_DATA = (SERVER = DEDICATED) (Servicename = yyyysvc.world)))

wenn Sie beim Erstellen einer Verbindung mit ODBC den Wert für den TNS-Servicenamen auswählen, wird beim automatischen Ausfüllen 'svc01' angezeigt (bitte beachten Sie das zusätzliche Komma). Sobald wir das Komma entfernt hatten, arbeitete es für uns.

0
JavaTec