We're facing a development problem, which while it isn't stopping us from working, but it's seriously slowing down our progress. It goes something like this ...
We have a ColdFusion interface to an Oracle PACKAGE, "package A". "Package A" invokes "package B", and "package B" invokes "package C". We're actively working on "package C", the last in the chain, and then testing those changes from the ColdFusion interface.
Everytime we run a CREATE OR REPLACE on "package C" (we've tried both compiling only the BODY, as well as the SPEC and the BODY), we get the following error from ColdFusion when we test from the interface:
ORA-06508 PL/SQL: Could not find the program unit being called
If we wait a bit, everything starts working again. Note that while we are waiting, "package C" is not being recompiled. So it's functioning fine. Our best guess is that there something happening due the connection pooling process in place. Maybe ... if you're lucky enough to latch onto a new connection, then the error doesn't appear? But, if you connect to a session that was present when "package C" was recompiled, then you get the ORA-06508? These connections are using a JDBC driver.
I guess I expected to get the ORA-04061 error ("Existing state of the package has been discarded"), and that
is coming up more rarely than the ORA-06508, but the "could not find the program unit" is just stopping our efforts until everything starts working again.
I found some suggestions online (http://www.orafaq.com/forum/t/14555/2/) which claim that the SHARED POOL should be flushed and that will help with this error, but I'm not sure I need to bring an A-bomb to a fist-fight. Plus, these PACKAGES aren't huge, so I'm not sure we're encountering the memory limits focused upon in those other posts:
package A: 1533 lines
package B: 1015 lines
package C: 1842 lines
Anyone have a suggestion for us to follow-up on? Like I said, we're not dead in the water, but this is getting pretty frustrating.
Thanks,
--=Chuck