Kebocoran akan menjadi masalah kursor terbuka maksimum.
ORA-01000: maximum open cursors exceeded
Jika kursor terbuka maksimum terlampaui, database akan menjadi tidak dapat digunakan, kecuali untuk kursor yang sudah ditahan. Namun, sebagian besar saat ini terjadi, kursor yang ditahan bahkan tidak digunakan (yang akan menjadi kasus dalam pertanyaan Anda).
Sejak Java 7, cara terbaik untuk menangani ini adalah dengan menggunakan coba dengan sumber daya
. Keduanya ResultSet
dan PreparedStatement
mengimplementasikan AutoCloseable
antarmuka yang berarti mereka akan ditutup saat tidak diperlukan lagi.
Jika Anda tidak memiliki Java 7, maka Anda perlu menangani ini di finally
blok, tetapi pastikan Anda memverifikasi nilai nol sebelum menutup jika tidak, Anda mungkin menemukan NPE jika sumber daya tidak pernah diinisialisasi.
Perhatikan bahwa kebalikannya tidak akan menyebabkan masalah karena menutup pernyataan akan secara otomatis menutup kumpulan hasil.
Perhatikan bahwa Anda dapat dengan mudah mengizinkan lebih banyak kursor ke aplikasi Anda untuk mengurangi peluang melebihi maksimum.
ALTER SYSTEM SET open_cursors = 400 SCOPE=BOTH;
Namun, sebagian besar waktu jika Anda menemukan kursor terbuka maksimum, ini seharusnya tidak menjadi solusi karena hanya akan menyembunyikan masalah sebenarnya.