Ich habe eine Java-Anwendung, die JDBC (über JPA) verwendet und über Hostname, Port und Oracle SID eine Verbindung zu einer Entwicklungsdatenbank herstellt:
jdbc: oracle: thin: @ oracle.hostserver1.mydomain.ca: 1521: XYZ
XYZ war die Oracle SID. Jetzt muss ich eine Verbindung zu einer anderen Oracle-Datenbank herstellen, die keine SID verwendet, sondern stattdessen einen Oracle "Service Name" verwendet.
Ich habe es versucht, aber es funktioniert nicht:
jdbc: oracle: thin: @ oracle.hostserver2.mydomain.ca: 1522: ABCD
ABCD ist der Dienstname der anderen Datenbank.
Was mache ich falsch?
quelle
jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAME
oderjdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME
mit Benutzername und Passwort als Argumente fürjdbc.getConnection()
. Immer noch rätselhaft.Es gibt also zwei einfache Möglichkeiten, um diese Arbeit zu machen. Die von Bert F bereitgestellte Lösung funktioniert einwandfrei, wenn Sie keine anderen speziellen Oracle-spezifischen Verbindungseigenschaften angeben müssen. Das Format dafür ist:
Wenn Sie jedoch andere Oracle-spezifische Verbindungseigenschaften angeben müssen, müssen Sie den langen TNSNAMES-Stil verwenden. Ich musste dies kürzlich tun, um gemeinsam genutzte Oracle-Verbindungen zu aktivieren (wobei der Server sein eigenes Verbindungspooling durchführt). Das TNS-Format lautet:
Wenn Sie mit dem Oracle TNSNAMES-Dateiformat vertraut sind, sollte Ihnen dies bekannt vorkommen. Wenn nicht, dann googeln Sie einfach nach den Details.
quelle
Sie können den TNS-Namen auch wie folgt in der JDBC-URL angeben
quelle
Versuche dies:
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD
Bearbeiten: pro Kommentar unten ist dies tatsächlich richtig:
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(beachten Sie die//
)Hier ist ein Link zu einem hilfreichen Artikel
quelle
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
.oracle.hostserver2.mydomain.ca
?Diese Diskussion half mir, das Problem zu lösen, mit dem ich tagelang zu kämpfen hatte. Ich habe mich im Internet umgesehen, bis ich die Antwort von Jim Tough am 18. Mai 11 um 15:17 Uhr fand. Mit dieser Antwort konnte ich mich verbinden. Jetzt möchte ich etwas zurückgeben und anderen mit einem vollständigen Beispiel helfen. Hier geht:
quelle
Falls Sie Eclipse verwenden, um Oracle ohne SID zu verbinden. Es stehen zwei Treiber zur Auswahl, nämlich der Oracle Thin-Treiber und der andere Treiber. Wählen Sie andere Treiber aus und geben Sie den Dienstnamen in die Datenbankspalte ein. Jetzt können Sie eine direkte Verbindung über den Dienstnamen ohne SID herstellen.
quelle
Bei Verwendung von
dag
anstelle vonthin
hat die Syntax unten, die auf den Dienstnamen verweist, für mich funktioniert. Diejdbc:thin
obigen Lösungen haben nicht funktioniert.quelle
Das sollte funktionieren:
jdbc:oracle:thin//hostname:Port/ServiceName=SERVICE_NAME
quelle