2

我们的应用程序已经成功使用 OracleDataSource 好几年了,我们现在正在评估切换到新的 Oracle 通用连接池 (UCP)。

使用新的 UCP 池,我们的应用程序会遇到 ORA-0100:一段时间后打开的最大游标数。

有些人似乎遇到过类似的问题:

是否有任何已知的解决方法/修复?

注意:我们会正确关闭会话和语句,并遵循所有已知的 JDBC/Hibernate 最佳实践。该应用程序 24/7 运行,数据访问层代码已超过 8 年,并且已经过详尽的测试。我们正在使用 Oracle 12c。

4

1 回答 1

1

好吧,事实证明我们虽然遵循了所有已知的最佳实践。在某些地方,我们使用ScrollableResult时没有正确关闭它们。在这种情况下,它显然会泄漏底层游标,即使在休眠会话关闭之后也是如此。我们修复了在代码中发现的所有问题,并且作为一项额外的防御措施,我们配置了maxConnectionReuseTime池的选项以确保定期更新连接。

注:我们没用一年的时间才发现问题,才几天,搞清楚问题后我干脆忘了回答问题了……

于 2017-04-20T18:51:36.070 回答