Ada beberapa hal yang dapat menyebabkan masalah ini, tetapi sebelum Anda mulai dengan JDBC, Anda perlu memastikan bahwa Anda dapat terhubung ke database menggunakan SQL * Plus. Jika Anda tidak terbiasa dengan SQL * Plus, itu adalah alat baris perintah untuk menghubungkan ke database Oracle yang telah menjadi bagian standar dari Oracle untuk waktu yang lama dan disertakan dengan Oracle XE.
Saat menghubungkan ke database Oracle menggunakan JDBC, Anda tidak terhubung ke database secara langsung. Sebaliknya, Anda terhubung ke pendengar TNS, yang kemudian menghubungkan Anda ke database. Kesalahan itu ORA-12505
berarti bahwa pendengar sudah naik dan Anda bisa terhubung, tetapi tidak bisa menghubungkan Anda ke database karena tidak tahu bahwa database sudah habis. Ada dua alasan untuk ini:
- database belum dimulai,
- database belum terdaftar dengan pendengar, misalnya karena basis data dimulai sebelum pendengar. (Ketika basis data mulai, ia mendaftarkan dirinya sendiri dengan pendengar jika sudah berjalan. Jika pendengar tidak berjalan, basis data tidak mendaftar sendiri, dan jika pendengar mulai, ia tidak mencari basis data yang mungkin daftar dengan itu.)
ORA-12505 berarti bahwa pendengar tahu tentang database itu, tetapi pendengar belum menerima pemberitahuan dari database bahwa database sudah habis. (Jika Anda mencoba terhubung ke database yang salah, menggunakan SID yang salah, Anda akan mendapatkan kesalahan ORA-12154 "TNS: tidak dapat menyelesaikan pengidentifikasi koneksi yang ditentukan".)
Layanan Oracle apa yang berjalan di snap-in Layanan? (Buka ini dari Control Panel> Administrative Tools> Services, atau hanya Start> Run> services.msc
.) Anda memerlukan layanan OracleServiceXE dan OracleXETNSListener untuk dapat berjalan.
Jika kedua layanan sudah dimulai, dapatkah Anda menyambungkan ke database di SQL * Plus menggunakan salah satu dari yang berikut ini pada prompt perintah? (Saya berasumsi Anda menjalankan ini pada mesin yang sudah Anda instal dengan Oracle XE.)
sqlplus system / system-password @XE
sqlplus system / system-password
sqlplus / as sysdba
(Ganti system-password
dengan kata sandi yang Anda tetapkan untuk pengguna SYS dan SYSTEM selama instalasi Oracle XE.)
Yang pertama dari ketiga terhubung melalui pendengar TNS, tetapi yang kedua terhubung langsung ke database tanpa melalui pendengar, dan hanya bekerja jika Anda berada di mesin yang sama dengan database. Jika yang pertama gagal tetapi dua yang lain berhasil, maka koneksi JDBC juga akan gagal. Jika demikian, sambungkan ke database menggunakan salah satu dari dua lainnya dan jalankan ALTER SYSTEM REGISTER
. Kemudian keluar dari SQL * Plus dan coba formulir pertama lagi.
Jika yang ketiga gagal tetapi yang kedua berhasil, tambahkan akun pengguna Anda ke grup ora_dba. Lakukan ini di Panel Kontrol> Manajemen Komputer> Pengguna dan Grup Lokal.
Setelah Anda bisa mendapatkan koneksi formulir
sqlplus system / system-password @XE
untuk bekerja, Anda harus dapat terhubung ke Oracle XE via JDBC. (Kebetulan, Anda belum menunjukkan kepada kami kode JDBC yang Anda gunakan untuk terhubung ke database, tapi saya menduga bahwa itu sangat mungkin benar; akan ada berbagai kesalahan lain jika bagian dari string koneksi salah.)