Hi,

We just had an issue in production on tomcat 6, a web application was
getting strange errors from the oracle database:

java.sql.SQLException: ORA-06508: PL/SQL: could not find program unit
being called in Package

Our configuration uses a database pool in GlobalNamingResources of
server.xml

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <Resource accessToUnderlyingConnectionAllowed="true"
auth="Container" driverClassName="oracle.jdbc.OracleDriver"
maxActive="10" maxIdle="5" maxWait="10000" name="jdbc/oraclePool"
password="xxx" type="javax.sql.DataSource"
url="jdbc:oracle:thin:@db.acme.com:1521:ACME" username="java_pool"
validationQuery="select 1 from dual"/>
  </GlobalNamingResources>

The cause of the error was the db admin patching a db package underlying
one used by our web-app. Post patch all the packages appeared valid to
the admin, but not to our app using db connections established prior to
the db patching.

We redeployed our app, but the error persisted. The only way to remove
the db error was to restart tomcat. Possibly, there was something wrong
with the database connections in the pool, not reflecting the new state
of the database.

Is there any way to tell the running Tomcat to clean out the connection
pool, so that it throws away all the established connections, and
establishes new ones for the applications. I don't really want to have
to stop all the applications on our server to deal with this sort of
issue.

Thanks

Dale

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to