2011-01-10 10 views
5

Ich versuche, eine Verbindung zu einer Oracle-Datenbank über Code (Ruby/DBI, aber das ist irrelevant) mit einem EasyConnect-Verbindungszeichenfolge. In der gesamten Oracle-Dokumentation wird angegeben, dass die Verbindungszeichenfolge als // hostname: port/service_name angegeben werden soll. Ich habe keinen service_name für die Datenbank, zu der ich mich verbinden muss, ich habe stattdessen eine SID. Gibt es eine Möglichkeit, eine EasyConnect-Verbindungszeichenfolge mithilfe einer SID anstelle eines Servicenamens zu erstellen?Oracle EasyConnect Verbindungszeichenfolge mit einer SID?

Meine Verbindung Code sieht wie folgt aus:

DBI.connect("DBI:OCI8://localhost:9000/the_sid", "username here", "password here")

ich verschiedene Dinge immer wieder versuchen, und je nachdem, was ich versuche, ich eine von zwei Fehlermeldungen:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor (DBI::DatabaseError) 
ORA-12154: TNS:could not resolve the connect identifier specified (DBI::DatabaseError) 
+0

Sind Sie sicher, dass Sie den Hostnamen und die Portnummer benötigen? Die Fehlermeldung scheint anzuzeigen, dass TNS-Listener ausgeführt wird. Wenn die TNS-Namen korrekt konfiguriert sind, lautet die Verbindungszeichenfolge "DBI: OCI8: the_sid". – Codo

+0

Ich habe die TNS-Namen nicht konfiguriert. –

Antwort

2

Bitte benutzen Sie versuchen Sie die SID als SERVICE-Name? Sie können normalerweise eine SID angeben, für die ein Service angefordert wird. SERVICE_NAMES ist normalerweise standardmäßig die SID. Bei einer SQL-Eingabeaufforderung:

SQL> show parameter service 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------------------------ 
service_names      string  sid 

SQL> 

Der Wert (n) in der Spalte Wert ist/sind der Service-Name (n) der Datenbank registriert ist.

+0

Wenn ich diesen Befehl von Oracle SQL Developer ausführen, bekomme ich keine Ausgabe (vielleicht habe ich keine Berechtigung, diesen Befehl auszuführen?) –

+0

Ich glaube, es ist ein SQL * Plus-Befehl, also müssen Sie es von dort ausführen . –

+0

Es ist ein SQL * Plus-Befehl. Versuchen Sie es von SQL * Plus auszuführen. – DCookie

Verwandte Themen