wake-up-neo.com

ORA-12545: Verbindung fehlgeschlagen, weil Zielhost oder Objekt nicht vorhanden ist - Kein Fehler in System.Data.OracleClient

Ich kann nicht glauben, dass ich diese Frage stellen muss, aber ich kann mich für mein Leben nicht mit einer Oracle 11g-Datenbank verbinden.

Das Folgende funktioniert bei der Verwendung von System.Data.OracleClient - aber dies wird natürlich abgeschrieben ..__ Wenn ich genau den gleichen Code aber mit Oracle.DataAccess.OracleClient verwende, erhalte ich die folgende Fehlermeldung

{"ORA-12545: Connect failed because target Host or object does not exist"}

Hier ist mein Code

using (OracleConnection con = new OracleConnection("Data Source=orac;User Id=SYSTEM; Password=Pass;"))
        {
            con.Open();
            Console.WriteLine("Connection opened");

            OracleCommand cmd2 = new OracleCommand("SELECT * FROM SYSTEM.TABLE", con);
            OracleDataReader oracleDataReader = cmd2.ExecuteReader();

            while (oracleDataReader.Read())
            {
                Console.WriteLine(oracleDataReader[0]);
            }
        }

Kann mir jemand helfen, was ich falsch mache?

Ich musste das Programm auf 32 Bit ändern, damit der Oracle.DataAccess.dll geladen werden konnte.

Ist das überhaupt die richtige Bibliothek, die verwendet werden soll ???

Vielen Dank

EDIT

tnsnames.ora-Datei wie folgt:

# tnsnames.ora Network Configuration File: 
C:\app\UserName\product\11.2.0\dbhome_3\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORAC =
 (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1522))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orac.example.com)
)
 )

LISTENER_ORAC =
(ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1522))

UPDATE

Ich habe versucht, eine Verbindung mit dem Oracle-SQL-Entwickler herzustellen. Dies funktioniert, solange ich den TNS-Verbindungstyp verwende, aber nicht funktioniert, wenn ich den Verbindungstyp Basic verwende.

Mir ist auch aufgefallen, dass in meinen Diensten 2 angerufen werden 

OracleOraDb11g_home1TNSListener OracleOraDb11g_home2TNSListener

Das orac dbhome ist home3 Ich glaube, könnte dies das Problem sein? Wenn ja, weiß jemand, wie ich das Problem beheben würde?

Vielen Dank

UPDATE In HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\gibt es zwei Eigenschaften (Default) und inst_loc. Es gibt einige Ordner, von denen zwei mit "KEY_OraDb11g_home1" und "KEY_OraDb11g_home2" bezeichnet werden. Beide enthalten eine Eigenschaft mit dem Namen Oracle_HOME.

KEY_OraDb11g_home1 - Oracle_HOME = C:\app\Benutzername\product\11.2.0\dbhome_2 KEY_OraDb11g_home2 - Oracle_HOME = C:\app\Benutzername\product\11.2.0\dbhome_3

Die SID für die Datenbank in home1 heißt OracleDev. Ich habe sie vielleicht schon vor einiger Zeit installiert, aber ich brauche sie jetzt definitiv nicht, wenn sie ein Problem verursacht

Vielen Dank

8
Nick Williams

EDIT

Lass uns etwas anderes versuchen.

Möglicherweise weiß ODP.NET nicht, wo Sie Ihr Oracle Home finden können, weil es nicht in Ihrer PATH-Umgebungsvariablen definiert ist oder wenn es nicht in der Registrierung festgelegt ist.

Überprüfen Sie Ihren PFAD und stellen Sie sicher, dass er Ihr Oracle Home-Verzeichnis und "Oracle Home\bin" enthält. Suchen Sie für die Registrierung nach HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\. Darin sollte ein Schlüssel namens HOME0 mit dem Zeichenfolgenwert Oracle_HOME enthalten sein. Stellen Sie sicher, dass es auf Ihr Oracle-Home zeigt.

2
Artless

Hatte ein ähnliches Problem:
Visual Studio verwendete die falsche Version von tnsnames.ora in ..\11.2.0\client_1\network\admin
TNS Ping hat die richtige Version von tnsnames.ora in ..\11.2.0\client_2\network\admin verwendet

Daher war tnsping erfolgreich, aber Visual Studio gab Folgendes zurück: ORA-12545: Verbindung fehlgeschlagen, weil Zielhost oder Objekt nicht vorhanden ist.

Lösung, wahrscheinlich nicht die beste, kopierte die korrekte Version von tnsnames.ora nach ..\11.2.0\client_1\network\admin 

0
Peter Chikov

Ich weiß nicht warum, aber setze Host auf 0.0.0.0 im tnsnames.ora und listner.ora hat für mich gearbeitet.

Natürlich musste lsnrctl start

0
Kishor Pawar

Überprüfen Sie die Host-Datei unter C:\windows\system32\drivers\etc. Insbesondere, wenn der Computer VM ist und sich die IP-Adresse des lokalen Hosts möglicherweise ändert, wenn die IP-Adresse von VM nicht statisch ist. Ändern Sie ggf. die IP des lokalen Hosts in dieser Datei 

0
teamaster