Saya telah menginstal Oracle 11g Express Edition Release 2 di windows saya 7 64 bit OS dan mencoba menjalankan program JDBC, maka saya mendapatkan kesalahan berikut:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
... 8 more
Jawaban:
Saya memperbaiki masalah ini dengan memperbaiki string jdbc saya.
Sebagai contoh, string jdbc yang benar harus ...
Tapi string jdbs yang saya gunakan adalah ...
(Catatan: antara
1521
danXE
harus a/
)String jdbc buruk ini memberi saya kesalahan ORA-12505 juga.
sumber
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: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.)
(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
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.)
sumber
SP2-0734: unknown command beginning "system/ora..." - rest of line ignored.
pada semua tanggal 3system/ora...
(atau SQL * Plus membaca baris itu dari file yang Anda suruh baca). Baris perintah yang saya berikan di atas dimaksudkan untuk digunakan dari jendela command-prompt / shell / Terminal. Jika Anda sudah menjalankan SQL * Plus, gantisqlplus
denganconnect
.Saya juga mendapat kesalahan yang sama tetapi ketika mencoba mereka bertiga gagal. Jika tiga di atas gagal. Coba status LSNRCTL jika Anda menemukan layanan (XE dalam kasus saya) hilang coba ini
Sekarang Anda dapat melihat layanan
Bahkan jika tidak melihat coba yang ini
Ini mungkin harus bekerja ...
sumber
local_listener
, pendengar orcl sekarang ditampilkan dilsnrctl
. Terima kasih banyak!ORA-65040: operation not allowed from within a pluggable database
apa artinya? Tidak dapat mengonfigurasi JDBC: /alter system set local_listener = ...
bekerja untukku.Saat Anda mendapatkan kesalahan ini "ORA-12505, TNS: listener saat ini tidak mengetahui SID yang diberikan di connect descriptor"
Solusi: Buka Layanan, dan mulai
OracleServiceXE
, setelah itu coba sambungkan ...sumber
Saya menemukan beberapa alasan untuk pengecualian ini
1) Nama database XE secara default. Jadi url akan menjadi " jdbc: oracle: thin: @localhost: 1521: XE ".
2) Pastikan bahwa OracleServiceXE, OracleXETNSListener sedang berjalan.it akan berada di Control Panel \ Semua Control Panel Items \ Administrative Tools \ Services
sumber
Saya memecahkan masalah ini dengan memperbaiki kode JDBC saya.
string JDBC yang benar harus ...
Tapi string JDBC yang saya gunakan adalah ...
Jadi, kesalahan menentukan orcl bukan xe menunjukkan kesalahan ini karena nama SID salah.
sumber
conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");
berhasil.Masalah saya terpecahkan ketika saya menggunakan kode di bawah ini:
sumber
Menghadapi kesalahan serupa, salah satu solusi di atas tidak membantu. Ada masalah dalam file listner.ora. Secara tidak sengaja saya telah menambahkan
SID
dariSID_LIST
lihat di bawah (bagian antara bintang *)Memperbaiki kesalahan ini seperti di bawah ini:
Berhenti dan basis data
Menghentikan pendengar OracleServiceXE dan OracleXETNSListener secara manual karena tidak berhenti secara otomatis dengan masuk ke Control Panel \ All Control Panel Items \ Administrative Tools \ Services. Restart database dan itu berfungsi seperti pesona.
sumber
Saya awalnya datang ke sini dengan masalah yang sama. Saya baru saja menginstal Oracle 12c pada Windows 8 (64-bit), tetapi sejak itu saya telah menyelesaikannya dengan 'TNSPING xe' pada baris perintah ... Jika koneksi tidak ditemukan atau nama tidak ditemukan, coba nama database, dalam kasus saya itu 'orcl' ... 'TNSPING orcl' lagi dan jika ping berhasil maka Anda perlu mengubah SID ke 'orcl' dalam kasus ini (atau apa pun nama database yang Anda gunakan) ...
sumber
Satu kemungkinan yang belum saya lihat secara luas dibahas adalah bahwa mungkin ada masalah menyelesaikan nama host pada mesin host itu sendiri. Jika tidak ada entri untuk $ (nama host) di / etc / hosts, pendengar Oracle menjadi bingung dan tidak akan muncul.
Itu ternyata masalah saya, dan menambahkan nama host dan alamat ip di / etc / hosts menyelesaikan masalah.
sumber
Oracle: Sintaks Nama Layanan Gaya Tipis
Nama layanan gaya-tipis hanya didukung oleh driver JDBC Thin. Sintaksnya adalah:
@ // host_name: port_number / service_name
http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA
sumber
Jika Anda memiliki koneksi yang berfungsi di Oracle SQL Developer, gunakan informasi pada menu koneksi untuk membangun url Anda, seperti yang dijelaskan dalam gambar berikut:
Pada contoh di atas, urlnya adalah:
jdbc:oracle:thin:@ORADEV.myserver.com:1521/myservice
Perhatikan bahwa jika Anda menggunakan SID, maka ada titik dua (":") alih-alih slash ("/") setelah nama host.
sumber
Saya juga menghadapi masalah yang sama. Saya telah menginstal Oracle Express edisi 10g di Windows XP OS menggunakan VMware dan itu berfungsi dengan baik. Karena sangat canggung mengetik pertanyaan SQL dalam utilitas SQL yang disediakan oleh 10g dan karena saya terbiasa bekerja dengan pengembang SQL, saya menginstal 32 bit pengembang SQL di XP dan mencoba menghubungkan ke DB SID "XE" saya. Tetapi koneksi gagal dengan pendengar TNS error-ORA-12505 saat ini tidak mengetahui SID yang diberikan dalam descriptor hubungkan. Saya bingung bagaimana masalah ini terjadi karena berfungsi baik dengan utilitas SQL dan saya juga telah membuat beberapa pemetaan Informatica menggunakan hal yang sama. Saya melakukan browsing banyak pada hal-hal ini ke sana dan menerapkan saran yang ditawarkan kepada saya setelah melakukan ping status "lsnrctl" di forum publik tetapi tidak berhasil. Namun, pagi ini saya mencoba membuat koneksi baru lagi, dan Voila, itu berhasil tanpa masalah. Saya menduga setelah membaca di beberapa posting yang terkadang mendengarkan pendengar sebelum DB menghubungkan atau sesuatu (maafkan saya untuk referensi kasar saya karena saya seorang pemula di sini) tetapi saya menyarankan untuk hanya me-restart mesin dan memeriksa lagi.
sumber
Saya memiliki masalah yang sama sehingga untuk menyelesaikan masalah ini saya mengkonfigurasi ulang pendengar saya menggunakan
netca
setelah itu saya menghapus database lama saya yang menggunakan ORCLdbca
dan kemudian saya membuat database baru lagi menggunakandbca
sumber
Saya telah menghadapi masalah yang sama dan diselesaikan dengan me-restart layanan OracleServiceXE. Goto Services.msc dan kemudian verifikasi layanan 'OracleServiceXE' UP dan berjalan
sumber
Saya memperbaiki masalah ini dengan mengubah " SID " menjadi " SERVICE_NAME " di file TNSNAMES.ora saya.
Harap lihat apakah DB Anda meminta SID atau SERVICE_NAME.
Bersulang
sumber
Jika Anda menggunakan Oracle Express Edition, Anda harus memiliki url ini
Saya punya masalah serupa dengan plugin config liquibase di pom.xml. Dan saya mengubah konfigurasi saya:
sumber
Koneksi con = DriverManager.getConnection ("jdbc: oracle: thin: @localhost: 1521: xe", "scott", "tiger");
Kesalahan yang saya dapatkan:
java.sql.SQLException: Listener menolak koneksi dengan kesalahan berikut: ORA-12505, TNS: listener saat ini tidak mengetahui SID yang diberikan dalam descriptor hubungkan. Deskriptor koneksi yang digunakan oleh klien adalah: localhost: 1521: xe
Bagaimana saya menyelesaikannya:
Koneksi con = DriverManager.getConnection ("jdbc: oracle: thin: localhost: 1521: xe", "scott", "tiger");
(Hapus @)
Tidak tahu mengapa, tetapi ini berfungsi sekarang ...
sumber
Periksa dengan melakukan tnsping dan nama instance di mesin host. Ini akan memberi Anda uraian tns dan semua sebagian besar nama host waktu berbeda yang tidak cocok.
Saya menyelesaikan masalah saya juga
Di mesin Unix $ tnsping (Enter)
Ini memberi saya uraian lengkap di mana saya menemukan bahwa nama host berbeda .. :)
sumber
Silakan periksa keduanya
OracleServiceXE
danOracleXETNSListener
status dimulai ketika Anda menavigasistart->run->services.msc
.Hanya untuk kasus saya
OracleXETNSListener
dimulai tetapiOracleServiceXE
tidak dimulai, ketika saya mulairight clicking -> start
dan memeriksa koneksi itu berfungsi untuk sayasumber
Saya punya masalah serupa di SQL Workbench.
URL:
jdbc: oracle: thin: @ 111.111.111.111: 1111: xe
tidak bekerja
URL:
jdbc: oracle: thin: @ 111.111.111.111: 1111: asdb
bekerja.
Ini membantu saya dalam situasi konkret saya. Saya khawatir, ada banyak alasan lain dengan solusi yang berbeda.
sumber
Punya masalah serupa. Masalahnya mulai terjadi secara tiba-tiba - kami memiliki memuat URL koneksi basis data yang seimbang, tetapi dalam koneksi jdbc saya menunjuk ke satu db secara langsung.
Berubah untuk memuat url db seimbang dan berhasil.
sumber
Dalam kasus saya tidak berhasil, akhirnya saya memulai kembali oracle saya dan pendengar TNS dan semuanya bekerja. Berjuang selama 2 hari.
sumber
Saya mendapatkan kesalahan ini ORA-12505, TNS: listener saat ini tidak mengetahui SID yang diberikan dalam descriptor hubungkan ketika saya mencoba untuk terhubung ke oracle DB menggunakan pengembang SQL.
String JDBC yang digunakan adalah jdbc: oracle: thin: @myserver: 1521 / XE , jelas yang benar dan dua layanan oracle wajib OracleServiceXE, OracleXETNSListener aktif dan berjalan .
Cara saya mengatasi masalah ini (Di Windows 10)
sumber
Selain menjalankan layanan (OracleServiceXE, OracleXETNSListener), ada kemungkinan perangkat lunak / firewall Anti-virus Anda masih dapat memblokirnya. Pastikan mereka tidak diblokir.
sumber
Saya baru saja memperbaikinya dengan memulai kembali / memulai oracleService dalam layanan
sumber
Peramal saya berhenti bekerja dan saya mendapatkan kesalahan ini. Saya me-restart mesin saya dan juga mencoba solusi di atas. Pada akhirnya, saya membuka layanan komponen dan memulai kembali layanan oracle dan semuanya mulai berfungsi. Semoga ini bisa membantu seseorang.
sumber
Saya baru saja membuat tautan basis data secara tidak benar.
Perbaikan sederhana bagi saya adalah dengan mengubah 'SID' menjadi SERVICE_NAME
Berubah
untuk
menyelesaikan masalah saya.
sumber