Statement Caching Needs Table Structure To Be Retained in the Database

(Doc ID 1361340.1)

Last updated on AUGUST 03, 2016

Applies to:

JDBC - Version to [Release 10.2 to 11.2]
Information in this document applies to any platform.


When the table is altered in its structure and a Statement is reused on client side (Statement originally created and executed before the alter) in JDBC,  this results in various errors:
    - Protocol Violation
    - java.lang.ArrayIndexOutOfBoundsException
    - lockup (hang) forever, causing 100% cpu usage

For example:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -128
at oracle.jdbc.driver.NumberCommonAccessor.getBigDecimal(
at oracle.jdbc.driver.NumberCommonAccessor.getObject(
at oracle.jdbc.driver.T4CNumberAccessor.getObject(
at oracle.jdbc.driver.OracleResultSetImpl.getObject(


java.sql.SQLException: Protocol violation
    at oracle.jdbc.driver.T4CTTIfun.receive(
    at oracle.jdbc.driver.T4CTTIfun.doRPC(
    at oracle.jdbc.driver.T4C8Oall.doOALL(
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(


- table structure was altered and a Statement is reused
- select * is being used


Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms