Saya memiliki aplikasi Java yang menggunakan JDBC (via JPA) yang terhubung ke database pengembangan menggunakan hostname, port dan Oracle SID, seperti ini:
jdbc: oracle: thin: @ oracle.hostserver1.mydomain.ca: 1521: XYZ
XYZ adalah Oracle SID. Sekarang saya perlu terhubung ke database Oracle berbeda yang tidak menggunakan SID, tetapi menggunakan Oracle "Service Name" sebagai gantinya.
Saya mencoba ini tetapi tidak berhasil:
jdbc: oracle: thin: @ oracle.hostserver2.mydomain.ca: 1522: ABCD
ABCD adalah Nama Layanan dari database lain.
Apa yang saya lakukan salah?
sumber
jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAME
ataujdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME
, dengan nama pengguna dan kata sandi sebagai argumen untukjdbc.getConnection()
. Masih membingungkan.Jadi ada dua cara mudah untuk membuat ini berfungsi. Solusi yang diposting oleh Bert F berfungsi dengan baik jika Anda tidak perlu menyediakan properti koneksi khusus Oracle lainnya. Format untuk itu adalah:
Namun, jika Anda perlu menyediakan properti koneksi khusus Oracle lainnya, maka Anda perlu menggunakan gaya panjang TNSNAMES. Saya harus melakukan ini baru-baru ini untuk mengaktifkan koneksi bersama Oracle (di mana server melakukan pooling koneksi sendiri). Format TNS adalah:
Jika Anda terbiasa dengan format file Oracle TNSNAMES, maka ini akan terlihat familier bagi Anda. Jika tidak maka hanya Google untuk detailnya.
sumber
Anda juga dapat menentukan nama TNS di URL JDBC seperti di bawah ini
sumber
Coba ini:
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD
Sunting: per komentar di bawah ini sebenarnya benar:
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(perhatikan//
)Berikut ini tautan ke artikel yang bermanfaat
sumber
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
.oracle.hostserver2.mydomain.ca
?Diskusi ini membantu saya menyelesaikan masalah yang saya perjuangkan selama berhari-hari. Saya melihat-lihat seluruh internet sampai saya menemukan jawaban oleh Jim Tough pada 18 Mei '11 jam 15:17. Dengan jawaban itu saya dapat terhubung. Sekarang saya ingin memberi kembali dan membantu orang lain dengan contoh lengkap. Ini dia:
sumber
Jika Anda menggunakan eclipse untuk menghubungkan oracle tanpa SID. Ada dua driver untuk dipilih yaitu, driver Oracle tipis dan lainnya adalah driver. Pilih driver lain dan masukkan nama layanan di kolom basis data. Sekarang Anda dapat terhubung langsung menggunakan nama layanan tanpa SID.
sumber
Saat menggunakan
dag
alih-alihthin
, sintaks di bawah ini yang menunjuk ke nama layanan bekerja untuk saya. Thejdbc:thin
solusi di atas tidak bekerja.sumber
Ini harusnya berfungsi:
jdbc:oracle:thin//hostname:Port/ServiceName=SERVICE_NAME
sumber