Java JDBC - Πώς να συνδεθείτε στην Oracle χρησιμοποιώντας το Όνομα υπηρεσίας αντί του SID

Έχω μια εφαρμογή Java που χρησιμοποιεί JDBC (μέσω JPA) που συνδέεται σε μια βάση δεδομένων ανάπτυξης χρησιμοποιώντας το όνομα κεντρικού υπολογιστή, τη θύρα και το SID της Oracle, όπως παρακάτω:

jdbc:oracle:thin:@oracle.hostserver1.mydomain.ca:1521:XYZ

XYZ ήταν το SID της Oracle. Τώρα πρέπει να συνδεθώ σε μια διαφορετική βάση δεδομένων Oracle που δεν χρησιμοποιεί SID, αλλά χρησιμοποιεί ένα Oracle "Service Name" αντί αυτού.

Δοκίμασα αυτό, αλλά δεν λειτουργεί:

jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522:ABCD

ABCD είναι το όνομα υπηρεσίας της άλλης βάσης δεδομένων.

Τι κάνω λάθος;

Λύση

http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA

Σύνταξη ονόματος υπηρεσίας λεπτού τύπου

Τα ονόματα υπηρεσιών τύπου Thin υποστηρίζονται μόνο από το πρόγραμμα οδήγησης JDBC Thin. Η σύνταξη είναι η εξής:

@//host_name:port_number/service_name

Για παράδειγμα:

jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename

Έτσι, θα προσπαθούσα να δοκιμάσω:

jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD

Επίσης, σύμφωνα με την απάντηση του Robert Greathouse's, μπορείτε επίσης να καθορίσετε το όνομα TNS στη διεύθυνση URL JDBC όπως παρακάτω:

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
Σχόλια (2)

Μπορείτε επίσης να καθορίσετε το όνομα TNS στη διεύθυνση URL JDBC όπως παρακάτω

jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL=TCP)(HOST=blah.example.com)(PORT=1521)))(CONNECT_DATA=(SID=BLAHSID)(GLOBAL_NAME=BLAHSID.WORLD)(SERVER=DEDICATED)))
Σχόλια (0)

Δοκιμάστε αυτό: jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD

Σχόλια (1)