【问题标题】:Getting error java.sql.SQLException: Protocol violation收到错误 java.sql.SQLException:协议冲突
【发布时间】:2015-10-13 14:28:56
【问题描述】:

从最近几天开始,由于下面提到的异常,我一直在摸不着头脑。 首先,我会要求您不要将其标记为重复,因为我已经经历过 数百个问答,仅在少数情况下提供了在我的情况下没有解决的答案。

目前我面临协议违反异常

堆栈跟踪:

java.sql.SQLException: 协议冲突在 oracle.jdbc.dbaccess.DBError.check_error(DBError.java:418) 在 oracle.jdbc.ttc7.Oclose.receive(Oclose.java:136) 在 oracle.jdbc.ttc7.TTC7Protocol.closeQuery(TTC7Protocol.java:406) 在 oracle.jdbc.driver.OracleResultSet.internal_close(OracleResultSet.java:145) 在 oracle.jdbc.driver.OracleResultSet.next(OracleResultSet.java:81) 在 org.apache.jsp.ditLogin_005f2_jsp._jspService(ditLogin_005f2_jsp.java:171) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

它只发生在一个环境/服务器中,而在其他环境/服务器中它工作正常 尽管两台服务器都具有相同的配置。

配置:

数据库:Oracle 11G

JVM:64 位

驱动程序(OJDBC):ojdbc6.jar

JDK:1.6

在某些网站中,我发现密码到期日期可能是原因。但在 两个服务器都是空的,这意味着我猜是无限的。 那么我必须研究的还有其他配置吗? 请帮我。提前致谢。

【问题讨论】:

  • Password expiry is null where - 您在查看用户所属的个人资料吗?您可以使用通过 JDBC 使用的凭据手动登录到目标数据库吗?我已经看到来自数据库的密码到期警告,但其他响应可能会导致它 - 甚至可能是登录触发器。通过另一个客户端手动连接,最好是从 SQL*Plus 开始,可能会给你一个提示。
  • 我已经为我在应用程序中使用的用户签入了dba_users 表。但是我没有使用该用户手动登录。我会检查的。谢谢亚历克斯

标签: java oracle jdbc


【解决方案1】:

您检查的dba_users.expiry_date 列与创建/更改用户命令的password expire 子句相关。

您在别处看到的 ORA-28002 错误可能导致协议违反,这与 the user profile 相关,特别是 password lifetime

您在此环境中连接的用户似乎有一个配置文件,该配置文件通过配置文件强制密码过期,而您目前处于宽限期。您可以在dba_users.profile 列中查看分配的配置文件,然后在dba_profiles 视图中查看限制。

您可以手动登录(这将显示警告;JDBC 不理解它,因此您会看到异常)并更改它,然后更新您的 JDBC 配置以匹配。

或者让您的 DBA 将用户更改为不同的个人资料,或修改他们现在使用的个人资料以使其不会过期。无论如何,您可能都想这样做,而不是根本更改密码;但更改密码以解决当前问题可能仍然更快。

【讨论】:

  • 它的“DEFAULT”配置文件和“LIMIT”列在dba_profiles 表中包含“UNLIMITED”
  • 嗯,好吧,这有点小题大做。您能否编辑问题以说明您通过 SQL*Plus 手动登录时发生了什么?
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多