【发布时间】:2012-01-16 03:21:41
【问题描述】:
我在 jdbc 连接到 oracle 数据库服务器时遇到了一个奇怪的问题。
我们在 tomcat 服务器上运行应用程序。这些应用程序使用 oracle 数据库。所有应用程序都使用相同的凭据。
应用程序一整天都运行良好。晚上没有活动。早上,当应用程序尝试将自己重新连接到数据库时,我们会收到一些(2 或 3)ORA-01017(无效的用户名/密码)错误。
然后重新连接,应用程序将正常运行。
这可以工作几天(大约 5 天),然后是一个或多个应用程序块!所有重新连接尝试均失败。
我们跟踪了网络通信,发现如果连接失败,ORA-01017 NO CREDENTIALS where sent。
当然没有人在晚上接触系统。
一种解决方法的尝试是,我们每天早上 6 点重新启动 tomcat 服务器以清理每个连接缓存或池。它没有帮助。
怎么了?有什么想法吗?
完全阻塞出现的持续 5 天间隔(每天重述)对我来说看起来很奇怪。
配置:
Database Oracle 10.2,JDBC Driver 11.2 thin,tomcat 6.0.24,JDK 6,操作系统是 windows,部分应用是 Avaya Voice Portal 5.0 的 Dialogs。
我们自己的(非 VP)应用程序使用简单的连接(无池)。
系统最初安装在 Windows 2003 服务器上,apserver 和 tomcat 服务器之间有一个 WAN。
系统现在迁移到数据库服务器附近的 linux (CentOS) 服务器上并且工作正常。不再有 ORA-01017。
【问题讨论】:
-
凭据是否与 LDAP 帐户相关联,如果是,该帐户是否对允许登录的时间有限制(例如,导致通宵问题)?
-
试着想想你在哪里持有凭证,晚上还会发生什么,是否有任何资源用于备份或其他什么?
-
@normalocity :在本地配置文件中配置的简单数据库用户。没有 LDAP。
-
@A.B.Cade :凭据存储在本地文件中。我的信息是系统 24/7 全天候运行。
-
我见过这种问题,因为当数据库关闭以进行夜间备份时,应用服务器连接池无法很好地释放资源。解决方法是在备份之前停止应用服务器并在备份之后再次启动它。你确定数据库不是一夜之间关闭的吗?
标签: java oracle jdbc tomcat6 ora-01017