加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – SQLException:oracle中的协议冲突

发布时间:2020-12-14 06:06:09 所属栏目:Java 来源:网络整理
导读:我收到了“违反协议”. 我有一个在RedHat Linux上运行的应用程序.数据库和应用程序共同驻留在机器上. 使用的Oracle版本:Oracle 11g R2(11.2.0.3.0) 使用的JDBC驱动程序:12.1.0.1 使用的Java:jdk1.7.0.65 32位 我遇到过很多论坛,其中这个错误被指出是一个
我收到了“违反协议”.
我有一个在RedHat Linux上运行的应用程序.数据库和应用程序共同驻留在机器上.

使用的Oracle版本:Oracle 11g R2(11.2.0.3.0)
使用的JDBC驱动程序:12.1.0.1
使用的Java:jdk1.7.0.65 32位

我遇到过很多论坛,其中这个错误被指出是一个驱动程序问题但是在所有那些论坛中使用的oracle版本更高且驱动程序版本更旧并且更改驱动程序解决了问题.但在我的情况下是Oracle版本较低但驱动程序版本较高.因此,在这种情况下,驱动程序的更高版本可能是一个问题?

此外,当达到DB上的最大连接数时,也会出现此协议违规?

错误信息:

java.sql.SQLException: Protocol violation: [72]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:464)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)

解决方法

这样的错误表明JDBC瘦驱动程序中的一个错误,它无法理解服务器在线路(套接字)上返回的内容.

您始终可以尝试使用最新的JDBC瘦驱动程序,希望能够解决该错误.截至今天,最新的是12.1.0.2.

如果这没有帮助,那么您需要联系Oracle支持.您将被要求提供的第一件事是提供发生此错误的连接的sqlnet跟踪.这将有助于Oracle工程师了解发生故障时网络上发生的情况.

要打开sqlnet跟踪,请在服务器上编辑sqlnet.ora文件并添加

TRACE_LEVEL_SERVER = 16

这将为跟踪控制器(在服务器上)中的每个连接添加跟踪文件.不要在生产系统上执行此操作,因为它会大大减慢系统速度并产生大量痕迹.

祝好运.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读