从最近几天开始,由于下面提到的例外,我正在摸不着头脑。 首先,我会要求你不要将其标记为重复,因为我已经完成了 数以百计的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,这意味着无限制。 那么我还需要研究其他任何配置吗? 请帮我。提前谢谢。
答案 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将用户更改为其他个人资料,或修改他们现在所处的个人资料,以使其不会过期。你可能想要这样做而不是改变密码;但是更改密码以解决当前问题可能仍然会更快。