Tuning Data Source Connection Pools 10-3
There may be other issues related to caching statements that are not listed here. If you see errors in your system related to prepared or callable statements, you should set the
statement cache size to 0, which turns off statement caching, to test if the problem is caused by caching prepared statements.
10.1.3.1 Calling a Stored Statement After a Database Change May Cause Errors
Prepared statements stored in the cache refer to specific database objects at the time the prepared statement is cached. If you perform any DDL data definition language
operations on database objects referenced in prepared statements stored in the cache, the statements may fail the next time you run them. For example, if you cache a
statement such as select from emp and then drop and recreate the emp table, the next time you run the cached statement, the statement may fail because the exact
emp
table that existed when the statement was prepared, no longer exists. Likewise, prepared statements are bound to the data type for each column in a table in
the database at the time the prepared statement is cached. If you add, delete, or rearrange columns in a table, prepared statements stored in the cache are likely to fail
when run again.
These limitations depend on the behavior of your DBMS.
10.1.3.2 Using setNull In a Prepared Statement
If you cache a prepared statement that uses a setNull bind variable, you must set the variable to the proper data type. If you use a generic data type, as in the following
example, data may be truncated or the statement may fail when it runs with a value other than null.
java.sql.Types.Long sal=null .
. .
if sal == null setNull2,intThis is incorrect
else setLong2,sal
Instead, use the following: if sal == null
setNull2,longThis is correct else
setLong2,sal
10.1.3.3 Statements in the Cache May Reserve Database Cursors
When WebLogic Server caches a prepared or callable statement, the statement may open a cursor in the database. If you cache too many statements, you may exceed the
limit of open cursors for a connection. To avoid exceeding the limit of open cursors for a connection, you can change the limit in your database management system or you
can reduce the statement cache size for the data source.
10.2 Connection Testing Options for a Data Source
To make sure that the database connections in a data source remain healthy, you should periodically test the connections. WebLogic Server includes two basic types of
testing: