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

Oracle.DataAccess.Client.OracleException ORA-03135:koneksi kehilangan kontak

Itu terjadi karena kode Anda meminta koneksi dari Oracle Connection Pool dan kumpulan koneksi mengembalikan koneksi yang terputus / basi ke Oracle DB. ODP.NET sendiri tidak menguji status koneksi dari koneksi yang dikirim ke klien.

Jadi untuk amannya bisa cek di connection status == Open untuk koneksi yang diterima dari pool saat Anda melakukan Connection.Open()

ATAU

biarkan ODP.NET melakukan pemeriksaan untuk Anda dengan mengatur Validate Connection = true di string koneksi Anda di web.config.

Kedua metode ini berdampak pada kinerja karena keduanya menguji status koneksi setiap kali Anda perlu terhubung ke database.

Opsi ketiga yang saya gunakan adalah penggunaan pengecualian. Pertama, optimis dan gunakan koneksi apa pun yang dikembalikan dari kumpulan koneksi. Jika Anda mendapatkan ORA - 3135, minta koneksi baru dan jalankan kueri Anda lagi seperti loop sementara. Dalam kasus terbaik, Anda bisa mendapatkan koneksi pertama Anda sebagai valid dan kueri Anda akan dieksekusi. Dalam kasus terburuk, semua koneksi di kumpulan Anda basi dalam hal ini kode akan dieksekusi N waktu (di mana N adalah ukuran kumpulan koneksi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01097

  2. Fungsi NLS_COLLATION_NAME() di Oracle

  3. Sisipan dan Pembaruan Berbasis Rekam Di Oracle

  4. Bagaimana cara memilih penyedia Oracle untuk aplikasi .Net?

  5. Cara Membuat Array Asosiatif Di Database Oracle