Masalah ini dengan kumpulan koneksi JDBC dan merupakan masalah yang Anda dapatkan dengan semua server aplikasi menggunakan kumpulan koneksi JDBC, bukan hanya Tomcat. Kumpulan koneksi akan membuat sejumlah koneksi tetap terbuka di kumpulan siap untuk permintaan berikutnya. Jika paket PL/SQL telah direferensikan oleh koneksi dan dikompilasi ulang maka panggilan berikutnya ke paket tersebut akan memunculkan kesalahan ORA-06508. Ini akan memengaruhi paket di mana pun di tumpukan panggilan - bukan hanya paket yang Anda panggil secara langsung.
Untuk mengatasi ini beberapa server aplikasi (seperti Weblogic) memiliki metode pengujian yang dipanggil secara berkala. Jika tes gagal, koneksi dihapus dari kumpulan atau disegarkan dengan cara tertentu. Saya tidak yakin mekanisme apa yang dimiliki Tomcat.
Cara lain untuk mengatasinya adalah dengan memanggil dbms_session.reset_package sebagai panggilan metode pertama dalam panggilan JDBC Anda. Ini akan menghapus status paket dari sesi Anda. Pendekatan ini tidak disarankan karena memiliki overhead kinerja ditambah variabel cakupan paket apa pun diatur ulang sehingga blok inisialisasi paket perlu dipanggil lagi - hit kinerja lainnya.
Jika Anda mengalami masalah dan tidak memiliki cara untuk menghentikan koneksi yang buruk, Anda harus menyetel ulang seluruh kumpulan koneksi karena koneksi apa pun di kumpulan akan mengalami pengecualian yang sama.