Tento problém se týká fondů připojení JDBC a jedná se o problém, který se vyskytuje u všech aplikačních serverů používajících fondy připojení JDBC, nejen u Tomcat. Fondy připojení udrží řadu připojení otevřených ve fondu připravených pro další požadavek. Pokud připojení odkazovalo na balíček PL/SQL a je znovu zkompilován, pak další volání tohoto balíčku vyvolá chybu ORA-06508. To ovlivní balíčky kdekoli v zásobníku volání - nejen balíček, který jste volali přímo.
K vyřešení tohoto problému mají některé aplikační servery (jako Weblogic) testovací metodu, která se pravidelně volá. Pokud test selže, připojení se z fondu odstraní nebo se nějakým způsobem obnoví. Nejsem si jistý, jaký mechanismus má Tomcat.
Dalším způsobem, jak to vyřešit, je zavolat dbms_session.reset_package jako první volání metody ve vašem volání JDBC. Tím se vymaže stav balíčku z vaší relace. Tento přístup se nedoporučuje, protože má režii na výkon a navíc se resetují všechny proměnné v rozsahu balíčku, takže inicializační bloky balíčku je třeba volat znovu – další zásah do výkonu.
Pokud máte problém a nemáte způsob, jak zrušit špatná připojení, budete muset resetovat celý fond připojení, protože všechna připojení ve fondu budou trpět stejnou výjimkou.