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