ORA-12505: TNS: Listener kennt derzeit nicht die SID, die im Verbindungsdeskriptor angegeben ist (DBD ERROR: OCIServerAttach)

8

Ich habe eine virtuelle Windows 2003 R2-Maschine erstellt, die auf VirtualBox ausgeführt wird, und ich habe Oracle (10201_database_win32) installiert.

Ich habe auch eine statische IP auf dem Virtual Ethernet zugewiesen.

Alles hat super nach der Installation funktioniert.

Ich listete ( lsnrctl services ) die Dienste auf, die der Zuhörer unmittelbar nach der Installation kannte, und das Ergebnis war:

%Vor%

Also habe ich neu gestartet und nichts hat mehr funktioniert. Ich habe den gleichen Befehl ausgeführt und hier ist, was ich habe:

%Vor%

Ich habe 5 bis 6 Mal uninstalliert / neu installiert und nichts. Also ich verstehe nicht ganz, was das Problem ist. Die Dienste sind alle gestartet und laufen so weit, wie ich überprüft habe.

Ich habe keine Ideen und Zeit hier.

Irgendwelche Vorschläge? Ich habe zahlreiche Foren usw. ohne konkrete Antwort oder Lösung überprüft.

Ich hoffe, dass jemand helfen kann!

Hier ist die Datei listener.log:

%Vor%     
DaTroop 16.07.2010, 18:34
quelle

4 Antworten

13

Ich habe einige vage Erinnerungen an Oracle-Datenbanken, die beim ersten Neustart nach der Installation der Datenbank ein bisschen herumspielen müssen. Sie haben uns jedoch nicht genug Informationen gegeben, um daran zu arbeiten. Zunächst einmal:

  • Welchen Code verwenden Sie, um eine Verbindung zur Datenbank herzustellen?
  • Es ist nicht klar, ob die Datenbankinstanz gestartet wurde. Können Sie mit sqlplus / as sysdba von der VM aus eine Verbindung zur Datenbank herstellen?
  • Was wurde seit dem letzten Neustart in die Datei listener.log (in %ORACLE_HOME%\network\log ) geschrieben?

BEARBEITEN : Ich bin jetzt in der Lage, ein Szenario zu entwickeln, das die gleiche Fehlermeldung erzeugt, die Sie erhalten haben. Es sieht für mich so aus, als ob die Datenbank, mit der Sie sich verbinden möchten, nicht gestartet wurde. Das Beispiel, das ich im Folgenden vorstelle, verwendet Oracle XE unter Linux, aber ich denke nicht, dass dies einen wesentlichen Unterschied macht.

Zuerst bestätigen wir, dass die Datenbank heruntergefahren ist:

%Vor%

Es ist der Text Connected to an idle instance , der uns sagt, dass die Datenbank heruntergefahren ist.

Die Verwendung von sqlplus / as sysdba verbindet uns als SYS mit der Datenbank, ohne ein Passwort zu benötigen, aber es funktioniert nur auf demselben Rechner wie die Datenbank selbst. In Ihrem Fall müssten Sie dies in der virtuellen Maschine ausführen. SYS hat die Berechtigung, die Datenbank zu starten und herunterzufahren und sich mit ihr zu verbinden, wenn sie heruntergefahren wird, aber normale Benutzer haben diese Berechtigungen nicht.

Nun trennen wir uns und versuchen, die Verbindung als normaler Benutzer wieder herzustellen, eine, die nicht berechtigt ist, die Datenbank zu starten / herunterzufahren oder sich mit ihr zu verbinden, wenn sie nicht erreichbar ist:

%Vor%

Das ist die Fehlermeldung, die Sie bekommen haben.

Lasst uns jetzt die Datenbank starten:

%Vor%

Nun, da die Datenbank hochgefahren ist, versuchen wir uns als normaler Benutzer anzumelden:

%Vor%

Wir sind drin.

Ich hatte zuvor noch keinen ORA-12505-Fehler gesehen, weil ich normalerweise keine Verbindung zu einer Oracle-Datenbank herstelle, indem ich die gesamte Verbindungszeichenfolge in die Befehlszeile eintrage. Dies ist wahrscheinlich ähnlich wie bei der Verbindung mit der Datenbank. Normalerweise stelle ich entweder eine Verbindung zu einer lokalen Datenbank her oder stelle eine Verbindung zu einer entfernten Datenbank her, indem ich einen TNS-Namen verwende (diese sind in der Datei tnsnames.ora in %ORACLE_HOME%\network\admin aufgeführt). In beiden Fällen erhalten Sie eine andere Fehlermeldung, wenn Sie versuchen, eine Verbindung zu einer Datenbank herzustellen, die heruntergefahren wurde.

Wenn Ihnen das oben genannte nicht hilft (insbesondere wenn die Datenbank bereits gestartet wurde oder Sie Fehler beim Starten der Datenbank erhalten), lassen Sie es uns wissen.

BEARBEITEN 2: Es scheint, dass die Probleme, die Sie hatten, in der Tat waren, weil die Datenbank nicht gestartet wurde. Offenbar ist Ihre Datenbank nicht so konfiguriert, dass sie beim Starten des Diensts gestartet wird. Es ist möglich, dass die Datenbank beim Starten des Service gestartet wird und heruntergefahren wird, wenn der Service gestoppt wird. Verwenden Sie dazu den Oracle Administration Assistant für Windows, siehe hier .

>     
Luke Woodward 16.07.2010, 21:03
quelle
2

Du könntest das versuchen.

Gehen Sie im Windows-Fenster zu "Verwaltung" -> "Dienste". Sehen Sie nach unten, wo Oracle [instanceNameHere] steht, und prüfen Sie, ob der Listener und der Dienst selbst ausgeführt werden. Möglicherweise müssen Sie es starten. Sie können es auch so einstellen, dass es automatisch startet, wenn Sie mit der rechten Maustaste darauf klicken und zu Eigenschaften gehen.

    
Sjuul Janssen 17.07.2010 20:22
quelle
1

Geben Sie hibernate.connection.url als "jdbc:oracle:thin:@127.0.0.1:1521:xe" an, dann können Sie das obige Problem lösen. Da Orakels Standard-SID "xe" ist, sollten wir so etwas geben. Wenn ich wie diese Daten in die DB ohne SQL-Ausnahmen eingefügt wurde, ist es meine Erfahrung in Echtzeit.

    
Java Mani 26.12.2011 07:39
quelle
0

Folgendes funktionierte für mich (Windows 7):

%Vor%

(mit enter_sid_here ersetzt durch die SID)

    
Matthew Strawbridge 26.02.2014 13:26
quelle