Έχω μια εφαρμογή 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)))
Μπορείτε επίσης να καθορίσετε το όνομα 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)))
Δοκιμάστε αυτό: jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD</code>,
Επεξεργασία: σύμφωνα με το παρακάτω σχόλιο αυτό είναι πραγματικά σωστό: jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(προσέξτε το //
)
Εδώ είναι ένας σύνδεσμος σε ένα χρήσιμο άρθρο