获取错误java.sql.SQLException:违反协议

时间:2015-10-13 14:28:56

标签: java oracle jdbc

从最近几天开始,由于下面提到的例外,我正在摸不着头脑。 首先,我会要求你不要将其标记为重复,因为我已经完成了 数以百计的Q& A并且仅在少数情况下提供答案,在我的案例中没有解决。

目前我面临违反协议的例外

堆栈追踪:

  

java.sql.SQLException:违反协议   oracle.jdbc.dbaccess.DBError.check_error(DBError.java:418)at at   oracle.jdbc.ttc7.Oclose.receive(Oclose.java:136)at   oracle.jdbc.ttc7.TTC7Protocol.closeQuery(TTC7Protocol.java:406)at at   oracle.jdbc.driver.OracleResultSet.internal_close(OracleResultSet.java:145)   在oracle.jdbc.driver.OracleResultSet.next(OracleResultSet.java:81)at   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)at   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)at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

它仅在一个环境/服务器中发生,而在其他环境/服务器中它正常工作 虽然两台服务器的配置相同。

配置:

数据库:Oracle 11G

JVM:64位

驱动程序(OJDBC):ojdbc6.jar

JDK:1.6

在某些网站上,我发现密码到期日可能是原因。但在 这两个服务器都是null,这意味着无限制。 那么我还需要研究其他任何配置吗? 请帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您检查的dba_users.expiry_date列与create / alter user命令的password expire子句相关。

您在其他地方提到的ORA-28002错误可能是违反协议的原因与the user profile有关,尤其是password lifetime

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

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

或让您的DBA将用户更改为其他个人资料,或修改他们现在所处的个人资料,以使其不会过期。你可能想要这样做而不是改变密码;但是更改密码以解决当前问题可能仍然会更快。