[Oracle] ORA-12514 TNS: Listener kennt derzeit keinen Dienst, der im Verbindungsdeskriptor angefordert wurde


Answers

Ich weiß, das ist eine alte Frage, aber immer noch unbeantwortet. Ich brauchte einen Tag Recherche, aber ich fand die einfachste Lösung, zumindest in meinem Fall (Oracle 11.2 unter Windows 2008 R2) und wollte teilen.

Der Fehler zeigt, wenn er direkt betrachtet wird, an, dass der Listener den Dienstnamen nicht erkennt. Aber wo bleiben Service-Namen? In %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

Die "SID_LIST" ist genau das, eine Liste von SIDs und Dienstnamen, die in einem Format zusammengestellt sind, das Sie kopieren oder nachschlagen können.

Ich habe das Problem Service Name hinzugefügt, dann in Windows "Dienste" Systemsteuerung habe ich einen "Neustart" auf dem Oracle-Listener-Dienst. Jetzt ist alles in Ordnung.

Question

Wir haben eine lokal ausgeführte Anwendung, bei der der folgende Fehler auftritt:

ORA-12514: TNS: Listener kennt derzeit keinen Dienst, der im Verbindungsdeskriptor angefordert wurde

Ich habe die Verbindung mit TNSPing getestet, die korrekt aufgelöst wurde, und ich habe versucht, SQLPlus zu versuchen, eine Verbindung herzustellen, die mit dem gleichen Fehler wie oben fehlgeschlagen ist. Ich habe diese Syntax für SQLPlus :

sqlplus username/password@addressname[or host name]

Wir haben bestätigt, dass:

  • Der TNS-Listener auf dem Server wird ausgeführt.
  • Oracle selbst läuft auf dem Server.

Änderungen, die an dieser Umgebung vorgenommen wurden, sind uns nicht bekannt. Können wir noch etwas testen?




Ich habe dieses Problem in meiner Linux-Umgebung gelöst, indem ich die IP meines Rechners in der Datei / etc / hosts aktualisiert habe.

Sie können Ihre Netzwerk-IP (inet end.) Mit:

$ifconfig

Überprüfen Sie, ob Ihre IP-Adresse mit der Datei / etc / hosts übereinstimmt:

$cat /etc/hosts

Editiere deine / etc / hosts Datei, falls du sie brauchst:

$sudo gedit /etc/hosts

Tschüss.




Überprüfen Sie, ob die Datenbank aktiv ist. Melden Sie sich beim Server an, legen Sie die Umgebungsvariable ORACLE_SID für die Datenbank-SID fest, und führen Sie SQL * Plus als lokale Verbindung aus.




Starten des OracleServiceXXX aus der services.msc funktionierte für mich in Windows.




Ich habe unten gearbeitet, um dieses Problem zu beheben.

  1. Ich habe die oracle_home in cmd-Eingabeaufforderung (Rechtsklick auf cmd.exe Als Systemadministrator ausführen) festgelegt. verwendet unter Befehl

    set oracle_home = "Pfad zum Orakelhaus"

Ich hatte Oracle in meinem D: Laufwerk installiert.

  1. Und gehen Sie zu Alle Programme -> Oracle -ora home1 -> Konfigurationsmigrationstools Net Manager -> Listener -> wählen Sie Database Services aus Dropdown -> Name der globalen Datenbank und SID sind beide gleich gesetzt, in meinem Fall ist es ORCL, legen Sie das Verzeichnis oracle_home fest. Klicken Sie auf Datei und speichern Sie die Netzwerkkonfiguration.



In meinem Fall war der Fehler auf die Tatsache zurückzuführen, dass der Listener den Dienst der Datenbank nicht registriert hatte. Ich habe das gelöst, indem ich die Dienste registriert habe. Beispiel:

Mein Deskriptor in tnsnames.ora :

LOCALDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = LOCALDB)
    )
  )

Also, ich fahre fort, den Dienst in der listener.ora manuell zu registrieren:

SID_LIST_LISTENER =
    (SID_DESC =
      (GLOBAL_DBNAME = LOCALDB)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (SID_NAME = LOCALDB)
    )
  )

Starten Sie den Listener schließlich per Befehl neu:

> lsnrctl stop
> lsnrctl start

Erledigt!




Was für mich funktionierte, war wirklich einfach. Ich musste den Dienst nur manuell in den "Windows Services" (services.msc in cmd trompt) starten. Mein Dienstname lautet: OracleServiceXXXXX.




Ich hatte auch das gleiche Problem und verbrachte 3 Tage um es auszugraben. Dies geschieht aufgrund eines falschen TNS-Diensteintrags. Überprüfen Sie zuerst, ob Sie eine Verbindung zur Standby-Datenbank von der Primärdatenbank aus herstellen können, indem Sie sql> sqlplus sys @ orstand als sysdba verwenden (orstand ist eine Standby-Datenbank). Wenn Sie keine Verbindung herstellen können, handelt es sich um ein Problem mit dem Dienst. Korrigieren Sie die Eingabe des Servicenamens in der TNS-Datei am primären Ende. Überprüfen Sie den gleichen Weg in der Standby-Datenbank, wenn Sie die Änderungen auch hier vornehmen müssen. und stellen Sie sicher, dass der Parameter log_archive_dest_2 parameter den richtigen Dienstnamen hat.




Ich habe denselben Fehler erhalten, weil die angegebene Remote-SID falsch war:

 > sqlplus $DATASOURCE_USERNAME/$DATASOURCE_PASSWORD@$DB_SERVER_URL/$REMOTE_SID 

Ich habe die Systemdatenbank abgefragt:

Wählen Sie * aus global_name;

und habe meine entfernte SID ("XE") gefunden.

Dann konnte ich mich ohne Probleme verbinden.