Oracle JDBC:无效的用户名/密码(ora-01017)
我与Oracle数据库服务器的jdbc连接有一个奇怪的问题。
我们已经在tomcat服务器上运行了应用程序。这些应用程序使用一个oracle数据库。所有应用程序都使用相同的凭据。
应用程序整天运行良好。晚上没有活动。早晨,当应用程序尝试将自身重新连接到数据库时,我们会收到一些(2或3)ORA-01017(无效的用户名/密码)错误。
然后重新连接工作,应用程序将正常运行。
这可以工作几天(大约5天),然后可以阻止一个或多个应用程序!所有重新连接尝试均失败。
我们跟踪了网络通信,发现连接失败ORA-01017 NO CREDENTIALS
并发送到哪里。
当然,没有人在晚上触摸系统。
一种解决方法是,我们每天早上6点重新启动tomcat服务器,以清理每个连接缓存或池。它没有帮助。
怎么了?有任何想法吗?
对我来说,连续5天出现完全阻塞的现象(每天都在重述)似乎很奇怪。
:
数据库Oracle 10.2,JDBC驱动程序11.2精简版,tomcat 6.0.24,JDK 6,操作系统是Windows,某些应用程序是Avaya
Voice Portal 5.0的对话框。
我们自己的(非VP)应用程序使用简单的Connections(无池)。
该系统最初是在Windows 2003服务器上设置的,该服务器在apserver和tomcat服务器之间具有WAN。
现在,该系统已迁移到数据库服务器附近的linux(CentOS)服务器,并且运行正常。不再是ORA-01017。
回答:
奇。一些想法:
记录用户名和密码几天,以确保它们正确无误。代码中的某些错误可能会覆盖您不期望的值。
考虑将JNDI与Tomcat提供的连接池一起使用。DBCP具有一些非常高级的选项,可以检查连接是否仍然有效以及如何重新连接。之后,您应该再也不会在日志中看到任何与连接有关的问题。这也将提高安全性,因为所有应用程序都不再需要知道数据库密码。
这可能是资源泄漏的问题(如果应用程序永远不会返回连接,则可能会发生这种情况),但是我希望会出现不同的错误消息。
某些数据库(DB2,H2)允许创建视图,使其他数据库中的远程表(如本地表)可见。不确定Oracle是否支持此功能,但是如果支持,则此远程表的用户名/密码可能是错误的。
还请考虑此博客文章中的要点:Oracle ORA-01017技巧
乍看之下,帖子中没有任何内容可能会引起您的问题,但也许某些脚本正在操纵该脚本tnsnames.ora
(例如,分发新副本)。
或者,DBA在每日备份期间禁用了所有用户。
以上是 Oracle JDBC:无效的用户名/密码(ora-01017) 的全部内容, 来源链接: utcz.com/qa/428193.html