File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Object Relational Mapping and the fly likes java.sql.SQLException: Protocol violation-SQL state [99999]; error code [17412]; error code [17402] Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "java.sql.SQLException: Protocol violation-SQL state [99999]; error code [17412]; error code [17402]" Watch "java.sql.SQLException: Protocol violation-SQL state [99999]; error code [17412]; error code [17402]" New topic
Author

java.sql.SQLException: Protocol violation-SQL state [99999]; error code [17412]; error code [17402]

srikumar vemuri
Greenhorn

Joined: Jun 05, 2008
Posts: 1
Hi All,

We have a web services application which is built on java and Spring WS and hosted on two nodes on the production environment. The application is running under TC server version "vfabric-tc-server-standard-2.6.3.RELEASE" and we are using java version "jdk1.6.0_24".

We have configured the JDBC data source connection pool using the factory "org.apache.tomcat.jdbc.pool.DataSourceFactory". The application was running fine for few days and suddenly on one of the nodes we started encountering "Protocol Violation" exception for some of the requests and it is the same case on the QA environment as well. The issue is only one of the nodes and on the other node the applicaiton is running fine with the same configurations, same software and hardware. BTW, the application is running fine on development without any issues and there we do not have any RAC configuration.

Mainly the underlying message of the exception says

1. SQL state [99999]; error code [17412]; Bigger type length than Maximum; nested exception is java.sql.SQLException: Bigger type length than Maximum
2. SQL state [99999]; error code [17402]; OALL8 is in an inconsistent state

We have checked many forums and tried lot of options but still could not resolve the issue. We are using the ojdbc driver version "11.2.0.3.0" and the back-end database is Oracle which is 11g 11.2.0.3.0.

Here are the details of the environment and also on the database side we do have RAC configured and there are two physical instances connected through 3 scan IPs.

1- Unix OS 64 bit
2- Oracle 11.2.0.3.0
3- JRE 1.6.24
4- Ojdbc1.6 jar (compatible with oracle 11.2.0.3.0)
5- Spring source tc server 2.6.3

Here is the configuration of the data source in server.xml

<Resource defaultAutoCommit="false" defaultReadOnly="false"
driverClassName="oracle.jdbc.OracleDriver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
fairQueue="false" initialSize="10"
jdbcInterceptors="ConnectionState;StatementFinalizer"
jmxEnabled="true" logAbandoned="false" maxActive="200"
maxIdle="100" maxWait="30000"
minEvictableIdleTimeMillis="5000" minIdle="10"
name="jdbc/test" password="XXXXXXXXXXXXXXXXXXXXXX"
removeAbandoned="false" removeAbandonedTimeout="60"
testOnBorrow="true" testOnReturn="false"
testWhileIdle="false" timeBetweenEvictionRunsMillis="5000"
type="javax.sql.DataSource"
url="jdbc: oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SCANIP)(PORT=1521))(FAILOVER=ON)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=HIDDEN)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=10)(DELAY=1))))"
useEquals="false" username="HIDDEN"
validationInterval="30000" validationQuery="SELECT 1 FROM DUAL"/>


The exception details are as below.


2013-02-02 17:48:41,010 - ERROR [tomcat-http--18] (JDBCExceptionReporter.java:78) - logExceptions()
Bigger type length than Maximum
2013-02-02 17:48:41,107 - ERROR [tomcat-http--18] (JDBCTransaction.java:168) - rollback()
JDBC rollback failed
java.sql.SQLException: Protocol violation
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:130)
at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:626)
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3470)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

2013-02-02 17:49:40,607 - ERROR [tomcat-http--14] (JDBCExceptionReporter.java:78) - logExceptions()
OALL8 is in an inconsistent state
2013-02-02 17:49:40,610 - ERROR [tomcat-http--14] (ApplicationLogger.java:208) - logError()
[Method: logResponseTime][org.springframework.dao.DataAccessResourceFailureException: Hibernate operation: could not get next sequence value; SQL [select SEQIPERFDASHBOARDID.nextval from dual]; OALL8 is in an inconsistent state; nested exception is java.sql.SQLException: OALL8 is in an inconsistent state
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:253)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:737)
at com.adidas.scv.framework.datalayer.HibernateDataAccessObject.saveOrUpdate(HibernateDataAccessObject.java:83)


We already tried following options
1. Recreated the TC server instance
2. Upgraded ojdbc version from 11.2.0.2.0 to 11.2.0.3.0
3. Firewall monitoring to check if any packets are lost
4. On QA, directly connected to one of the database instance instead of using SCANIP
5. Upgraded java to 1.7 update 13


Please let me know if anyone has encountered similar issue and has found any solution.

Regards,
Sri
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: java.sql.SQLException: Protocol violation-SQL state [99999]; error code [17412]; error code [17402]