Java Oracle JDBC:无效的用户名/密码(ora-01017)
我在jdbc连接到oracle数据库服务器时遇到了一个奇怪的问题 我们在tomcat服务器上运行应用程序。这些应用程序使用oracle数据库。所有应用程序都使用相同的凭据 应用程序整天运行良好。晚上没有活动。早上,当应用程序尝试重新连接到数据库时,我们收到一些(2或3)ORA-01017(无效用户名/密码)错误 然后重新连接工作,应用程序将正常运行 这可以工作几天(大约5天),然后是一个或多个应用程序块!所有重新连接尝试均失败 我们跟踪了网络通信,发现如果连接失败,则没有凭证发送到哪里 当然,没有人在晚上接触系统 解决方法之一是每天早上6点重新启动tomcat服务器,以清理每个连接缓存或池。这没有帮助 怎么了?有什么想法吗 在我看来,连续5天出现完全堵塞的现象(每天重新开始)看起来非常奇怪 配置: 数据库Oracle 10.2,JDBC驱动程序11.2精简版,tomcat 6.0.24,JDK 6,操作系统是windows,一些应用程序是Avaya Voice Portal 5.0的对话框 我们自己的(非VP)应用程序使用简单连接(无池)Java Oracle JDBC:无效的用户名/密码(ora-01017),java,oracle,jdbc,tomcat6,ora-01017,Java,Oracle,Jdbc,Tomcat6,Ora 01017,我在jdbc连接到oracle数据库服务器时遇到了一个奇怪的问题 我们在tomcat服务器上运行应用程序。这些应用程序使用oracle数据库。所有应用程序都使用相同的凭据 应用程序整天运行良好。晚上没有活动。早上,当应用程序尝试重新连接到数据库时,我们收到一些(2或3)ORA-01017(无效用户名/密码)错误 然后重新连接工作,应用程序将正常运行 这可以工作几天(大约5天),然后是一个或多个应用程序块!所有重新连接尝试均失败 我们跟踪了网络通信,发现如果连接失败,则没有凭证发送到哪里 当然,没
该系统最初安装在Windows 2003服务器上,在apserver和tomcat服务器之间有一个WAN 该系统现在已迁移到数据库服务器附近的linux(CentOS)服务器上,工作正常。不再有ORA-01017了。奇怪。一些想法:
也请考虑本博客文章中的要点:
乍一看,文章中的任何内容都不会引起您的问题,但可能有脚本正在处理tnsnames.ora
(例如分发新副本)
或者DBA在每日备份时禁用了所有用户。我会检查Oracle侦听器和跟踪日志。正如Aaron Digulla所说,这听起来确实像是资源枯竭 对于我来说,OracleDriver的不兼容版本导致了这个问题,您的应用程序应该手动注册oracle驱动程序(我需要使用的jar正在注册),或者agter java 6 ojdbc.jar应该位于应用程序的类路径中。因此,请为您的oracle安装谷歌兼容的驱动程序版本,并在pom文件中声明它(使用所需的插件将其放入生成的jar中),然后从代码中手动引用它,或者将ojdbc.jar放在jar可以看到它的某个地方。完整链接: 关于连接到oracle数据库:
关于java类路径:凭据是否绑定到LDAP帐户,如果是,该帐户是否对允许其在一天中的什么时间登录有限制(例如,导致夜间问题)?试着想想您在哪里持有凭据,以及晚上会发生什么事,是否有用于备份或其他用途的资源?@normalocity:在本地配置文件中配置的简单数据库用户。否LDAP.@A.B.Cade:凭据存储在本地文件中。据我所知,系统是全天候运行的。我见过这种问题,因为当数据库停止夜间备份时,应用服务器连接池没有很好地释放资源。解决方法是在备份之前停止应用程序服务器,并在备份之后重新启动它。您确定数据库不会在一夜之间关闭吗?谢谢您的回答。我来看看你的一些建议。一点:我们使用的是瘦驱动程序。这意味着没有使用tnsname.ora。看起来我在我的原始帖子中没有提到这一点。因为错误不再发生(从windows server切换到centos系统(可能只是巧合))并且由于有用的建议,我将此设置为已回答。