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

Oracle tidak menghapus kursor setelah menutup set hasil

Parameter init.ora open_cursors mendefinisikan maksimum kursor terbuka yang dapat dimiliki sesi sekaligus. Ini memiliki nilai default 50. Jika aplikasi melebihi angka ini, kesalahan "ORA-01000:kursor terbuka maksimum terlampaui" akan muncul.

Oleh karena itu wajib untuk menutup sumber daya JDBC saat tidak diperlukan lagi, khususnya java.sql.ResultSet dan java.sql.Statement. Jika tidak ditutup, aplikasi mengalami kebocoran sumber daya.

Dalam hal menggunakan kembali objek Connection, Anda harus menyadari fakta bahwa kursor Oracle yang dibuka tetap terbuka dan digunakan selama koneksi ada dan transaksi belum berakhir. Saat aplikasi dijalankan, kursor yang dibuka akan dilepaskan.

Oleh karena itu, sebagai perancang aplikasi, Anda perlu mengetahui perkiraan kasar dari kursor terbuka yang diperlukan untuk transaksi Anda yang paling kompleks.

Kesulitannya terletak pada ketidakmampuan tampilan parameter internal Oracle (v$open_cursor, v$sesstat, et. al.) untuk menunjukkan perbedaan antara kursor yang dibuka, yang dapat digunakan kembali dan kursor yang dibuka, yang masih diblokir (tidak dapat digunakan kembali!) oleh ResulSet atau Pernyataan yang tidak tertutup. Jika Anda menutup semua objek Statement dan ResultSet di blok terakhir Anda, aplikasi Anda akan baik-baik saja.

Menyesuaikan parameter init.ora bekerja seperti ini (aplikasi kita membutuhkan maksimal 800 kursor)

ALTER SYSTEM SET open_cursors = 800 SCOPE=BOTH;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Driver Oracle alternatif untuk .net

  2. Apakah kebuntuan mungkin terjadi saat memperbarui dan menghapus baris yang berbeda dalam sebuah tabel?

  3. PL/SQL Gateway di R11i

  4. Bisakah driver yang dikelola Oracle menggunakan async/menunggu dengan benar?

  5. Pola desain terbaik untuk menutup koneksi database saat terjadi pengecualian