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;