Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SQLException:Pelanggaran protokol. Masalah Driver Oracle JDBC

Untuk googler masa depan yang memiliki halaman ini, inilah masalah yang kami alami. Pengecualian pelanggaran protokol sedang dicatat pada log aplikasi dan jejak Oracle.

Jejak Oracle

Ini adalah kesalahan dari file jejak Oracle

--- PELANGGARAN PROTOKOL TERDETEKSI ---

----- Dump Cursor sql_id=1j5kjnkncpp xsc=0x2a053a2a0 cur=0x2a052f1cf0 ---
----- Current SQL Statement for this session (sql_id=1jjns4k6npp) -----
        select xyz

Dari Log Aplikasi

Caused by: org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [72000]; error code [20000];

Gejala

Pengecualian ini terjadi sesekali. Jejak tumpukan memiliki sql berbeda di dalamnya yang sangat membingungkan. Menjalankan sql dengan sql plus bekerja dengan baik.

Akar Penyebab

Pengecualian dilemparkan ketika driver Oracle mencoba mengekspor data CLOB. Ini terjadi dengan hanya beberapa catatan, tidak semuanya. Data seperti itu adalah file. Secara visual kami tidak dapat melihat apa yang salah dengan data tersebut.

Mengapa kami melihat kesalahan di log oracle ?

Jadi jika ini adalah cacat driver, mengapa kami melihat kesalahan di oracle trace ? Logikanya kesalahan driver seharusnya hanya terbatas pada log aplikasi. Alasannya adalah ketika pelanggaran protokol terjadi, koneksi menjadi rusak. Koneksi ini dikembalikan ke kumpulan koneksi. Setiap pengguna atau pekerjaan ketika akan menggunakan koneksi itu tidak akan berfungsi dan akan mengalami kesalahan. Itu sebabnya hal itu akan terjadi di tempat-tempat acak, dengan pengguna acak

Solusi

Perbaikan jangka pendek adalah mengubah properti ini di kumpulan koneksi. Kami menggunakan kumpulan koneksi DBCP.

Berubah fromds.setTestOnBorrow(false);tods.setTestOnBorrow(true);

Sekarang ketika kumpulan mengembalikan koneksi yang rusak ke kumpulan, sebelum aplikasi meminjam koneksi ini, itu akan menguji validitasnya. Jika koneksi tidak dapat digunakan, kumpulan akan dibuang dan aplikasi mendapatkan koneksi baru/valid.

Jika Anda mengaktifkan log kumpulan koneksi, Anda akan melihat pengecualian yang biasanya ditelan.

Peningkatan Versi Pengemudi

Tingkatkan ke OJDBC 12.1.0.2 dari OJDBC 12.1.0.1 memecahkan masalah, bahkan untuk baris yang bermasalah.

Beberapa tautan lain untuk referensi

https://confluence.atlassian.com/display/CONFKB/java.sql.SQLException%3A+Protocol+violation+caught+while+accessing+a+page+and+Oracle+DB+is+used



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menerapkan hubungan satu-ke-satu, satu-ke-banyak dan banyak-ke-banyak saat mendesain tabel?

  2. Memilih Nilai dari Variabel / Array Tabel Oracle?

  3. Praktik terbaik:.NET:Bagaimana cara mengembalikan PK terhadap database oracle?

  4. Cara melihat pernyataan Oracle SQL aktual yang sedang dieksekusi

  5. Memberikan Hak atas Prosedur Tersimpan kepada pengguna Oracle lainnya