Protocol Violation. Oracle JDBC Driver issue

2019-09-14 15:29发布

问题:

Could someone help with next exception:

[2013.08.14 09:01:56:173] ERROR: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO INDICATOR_VALUES(ID, VALUE, REF_CLIENT_ID, REF_MANAGING_INDICATOR_ID) VALUES(INDICATOR_VALUE_ID_SEQUENCE.NEXTVAL, ?, ?, ?)]; SQL state [99999]; error code [17401]; Protocol violation; nested exception is java.sql.BatchUpdateException: Protocol violation
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:615)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:884)
at com.cci.commons.dao.BaseDAO.batchUpdate(BaseDAO.java:186)

Version of ORACLE: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

JAVA: 1.6.0_29-b11

JDBC driver: ojdbc6.jar

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_24-rev-b08 (Sun Microsystems Inc.)
Implementation-Vendor: Oracle Corporation
Implementation-Title: JDBC
Implementation-Version: 11.2.0.2.0
Repository-Id: JAVAVM_11.2.0.2.0_LINUX_100812.1
Specification-Vendor: Sun Microsystems Inc.
Specification-Title: JDBC
Specification-Version: 4.0
Main-Class: oracle.jdbc.OracleDriver
sealed: true

Name: oracle/sql/converter/
Sealed: false

Name: oracle/sql/
Sealed: false

Name: oracle/sql/converter_xcharset/
Sealed: false

回答1:

As it turned out the cause of problem was Oracle user's password. It was close to expiration. After Oracle user's password reset error disappeared.



回答2:

Sometimes it can be related with outofmemory while you are committing to database. Commiting database needs some memory and if jvm reaches max memory it throws ProtocolViolationException. It is useful to dump memory to investigate root cause.



标签: oracle jdbc