2015-04-03 8 views
11

Wenn ich das Datenquellen-Explorer-Fenster öffne und versuche, ein neues Verbindungsprofil zu erstellen, wähle ich "Oracle", den Oracle Thin Driver, und dann zeige ich es auf die folgende JAR-Datei auf meinem PC:Die Eclipse-Datenquelle konnte mit 12c jar nicht in Oracle 12c erstellt werden. Aber 11g funktioniert

C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar 

Nachdem die Verbindungsparameter liefert, leitet er eine Verbindung uRL in folgendem Format mit dem

jdbc:oracle:thin:@host:PORT:SID 

jedoch, was ich will es diese abzuleiten ist (man beachte den Doppelpunkt anstelle eines Schrägstrich)

jdbc:oracle:thin:@host:PORT/SID 

Ich scheine in der Lage sein, 11g Datenbanken mit der generierten URL verbinden, aber keine 12c, ich weiß nicht, ob dies zufällig ist oder wenn ich ein anderes Problem habe.

In meinem Programm verwende ich JPA und es liest eine Verbindungs-URL aus meiner Konfigurationsdatei im gewünschten Schrägstrichformat und das Programm kann eine Verbindung herstellen und die Verbindung schlägt fehl, wenn ich die URL stattdessen einen Doppelpunkt verwenden.

Wie erstelle ich ein Verbindungsprofil in der Datenquellenexplorersicht des Eclipse, wenn ich die abgeleitete Verbindungsurl nicht steuern kann, um eine URL mit einem Schrägstrich anstelle eines Doppelpunkts zu erzeugen? Der Fehler Ich erhalte ist:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 

Update 1

Eine Sache, die ich muss darauf hingewiesen, dass selbst wenn ich die jdbc7.jar Datei verknüpfen, die mit Oracle 12c kommt, immer noch der Fahrer angezeigt wird, wie obwohl es "Oracle 11" ist

enter image description here

Update 2:

Hier ist ein Beispiel dessen, was in meiner Datei tnsnames.ora:

AFDEDEV.MYCO.COM = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = servername.sys.MYCO.com)(PORT = 2)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = afdedev.MYCO.com) 
    ) 
) 

enter image description here

Es ist wie der Verbindungszeichenfolge sieht Builder erwartet nur eine SID. Was wäre meine SID oder wie kann ich herausfinden? Ich habe sowohl AFDEDEV als auch AFDEDEV.MYCO.COM ausprobiert. Im 11g Fall, der funktioniert hat, habe ich das Äquivalent von AFDEDEV verwendet. Sorry, ich verstehe SIDs vs. SERVICE NAMES nicht so gut. Gibt es eine Abfrage, die ich gegen die DB ausführen könnte, um mir die SID zu sagen?

+1

Das '/' Format verwendet den Dienstnamen, nicht die SID. Vielleicht funktioniert es in 11g, weil diese in dieser Datenbank gleich sind, aber in Ihrer 12c-Instanz unterschiedlich sind. Oder Sie haben eine 11g listener.ora, die die SIDs definiert, während Ihre 12c dies nicht tut. Gibt Ihnen Eclipse die Möglichkeit anzugeben, ob Sie den SID- oder Dienstnamen angeben? –

+0

@Alex: Danke. Bitte beachten Sie den Text unter UPDATE 2 im ursprünglichen Post. – ChadD

+0

Ich habe auch keine listener.ora-Datei und habe sie nie aktualisiert, nicht sicher, wofür es ist. – ChadD

Antwort

4

Dies scheint eine Einschränkung der Eclipse "Oracle Thin Driver" Vorlage zu sein. Sie können nur eine SID für die Verbindung und keinen Dienstnamen angeben. und entweder kennen Sie die SID nicht oder sie ist nicht beim Listener registriert (den Ihr DBA auflösen müsste).

Wenn Sie einen neuen Treiber aus der Vorlage "Oracle Database 11g Driver" anstatt aus der Vorlage "Oracle Thin Driver" erstellen und auf Ihre 12c ojdbc7.jar-Datei verweisen, können Sie angeben, ob die Datei bereitgestellt werden soll ein Dienstname stattdessen. Das erzeugt dann eine URL wie jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com.

Es ist immer noch die gleichen Thin-Treiber Eclipse scheint es einfach besser zu verstehen,

0

Sie können auch ein Profil von ‚Other Driver‘ Vorlage erstellen, fügen Sie ojdbc7.jar in hinzufügen Abschnitt Jars.

Jetzt können Sie die URL-Zeichenfolge und andere Parameter selbst angeben und die Vorlage füllt nichts automatisch für Sie. Auf diese Weise können Sie den Servicenamen mit einem vorangestellten "/" versehen.

Verwandte Themen