JDBC Protocol Violation When Using JDK 1.6 (32bit) on Solaris (Doc ID 1084498.1)

Last updated on MARCH 08, 2017

Applies to:

JDBC - Version 11.1.0.6 and later
Oracle Solaris on SPARC (64-bit)
***Checked for relevance on 26-Apr-2013***
***Checked for relevance on 21-May-2015***

Symptoms

An application running on a Solaris client with JDK 1.6 (32bit) using a JDBC/thin 11g driver queries a large table  and gets java.sql.SQLException: Protocol violation after partially completing the row fetch.


/usr/jdk/jdk1.6.0_18/bin/java -cp /opt/app/oracle/product/11.1.0/jdbc/lib/ojdbc6.jar:. Batching2
java.sql.SQLException: Protocol violation
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:403)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1049)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:314)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:228)
at Batching2$1MyThread.run(Batching2.java:37)
rows retrieved: 101820
java.sql.SQLException: Bigger type length than Maximum
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:403)
at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2242)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB2(T4CMAREngine.java:1090)
at oracle.jdbc.driver.T4C8TTIrxh.unmarshalV10(T4C8TTIrxh.java:108)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:650)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1000)
at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:314)
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:228)
at Batching2$1MyThread.run(Batching2.java:37)
rows retrieved: 426430


         
The Sun Hotspot JVM has 2 implementations: server and client

The issue reproduces only with server :

java -server -cp /opt/app/oracle/product/11.2.0/jdbc/lib/ojdbc6.jar:. Batching2



The error does not reproduce with "client"

java -client -cp /opt/app/oracle/product/11.2.0/jdbc/lib/ojdbc6.jar:. Batching2

for differences between -client and -server see: http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/java.html


The error does not occur with a 64 bit JVM






Cause

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