Fehler: ORA-12545: CONNECT nicht erfolgreich, da Ziel-Host oder -Objekt nicht vorhanden

Was bedeutet diese Fehlermeldung bei Oracle?

Der Fehler ORA-12545 erscheint beim Aufbau der Datenbankverbindung. Das kann verschiedene Ursachen haben. Meistens sind einfach die falsche Verbindungsparameter hinterlegt.

Symfony Fehler: 
PDOException Exception ConnectionException HTTP 500 Internal Server Error
An exception occurred in driver: SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12545: CONNECT nicht erfolgreich, da Ziel-Host oder -Objekt nicht vorhanden
ORA-12545: Connect failed because target host or object does not exist

Mögliche Ursachen

  1. Kein Eintrag in der Datei TNSNAMES.ora vorhanden!
    Entweder händisch die Datei bearbeiten und ein Eintrag hinzufügen oder das „Oracle Net Manager“ Programm verwenden. Ich verwende lieber die GUI und fasse die TNSNAMES.ora datei selten händisch an.
  2. Tippfehler in TNSNAMES.ora
    Es kann sein das sich ein Tippfehler in deine Konfigurationsdatei eingeschlichen hat. Prüfe nochmal alle Daten.
  3. Prüfe die Config Datei deiner Applikation. Unter Symfony wäre das z.B. entweder die „.env“ oder die „doctrine.yaml“ Datei. Auch hier könnte ein Tippfehler vorhanden sein!
  4. Symfony und Doctrine: du verwendest evtl. die falsche Verbindungsparameter
    Beispiel:
doctrine:
    dbal:
        dbname: 'my_oracle_db'
        host: 'db-server' #Vorsicht hier, der Host darf nicht eingegeben werden wenn dbname ein "Net Service Name" aus TNSNAMES.ora ist!
        user: 'my_user'
        password: 'my_password'
        driver: 'pdo_oci'

In Symfony bzw. Doctrine, sollte man unter „host“ nichts eintragen. Hier reicht es ein dbname zu spezifizieren! Der Host steht ja bereits in TNSNAMES.ora!

Daher die „host“ Einstellung leer lassen! Nur der dbname muss eingegeben werden!

Wann sollte man die „host“ Einstellung in doctrine.yaml verwenden?

Wenn der Host eingegeben wird dann versucht Doctrine eine Datenbankverbindung aufzubauen ohne dabei über die TNSNAMES.ora zu gehen. In diesem Fall müssen auch alle andere Parameter korrekt hinterlegt werden. Unter dbname müsste der Service Name eingetragen werden. Auch der Port, sollte dieser vom Default Port 1521 abweichen, muss hinterlegt werden.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert