UCP和Oracle 12c中的连接已关闭问题



从Oracle 11g迁移到Oracle 12 c时,我们使用UCP(12.1.0.2.0)得到以下错误

java.sql.SQLException: The connection is closed: The connection is closed
at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:464)
at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:448)
at oracle.ucp.jdbc.proxy.JDBCConnectionProxyFactory.invoke(JDBCConnectionProxyFactory.java:307)
at oracle.ucp.jdbc.proxy.ConnectionProxyFactory.invoke(ConnectionProxyFactory.java:50)
at com.sun.proxy.$Proxy24.prepareStatement(Unknown Source)

这是一个多线程应用程序,我们从UCP池中获取连接,使用它,然后关闭连接。然而,对于某些操作,我们在连线上得到了上述错误。prepareStatement(statement)我们正在使用PoolDataSource

尝试的东西很少1) 使用连接池的默认值,并且仅设置池大小的最小值和最大值。2) 将setValidateConnectionOnBorrow设置为true,3) 将setValidateConnectionOnBorrow设置为true,将setValidateConnectionOnBorrow设为"SELECT 1 FROM DUAL"4) 使用带标签的连接5) 数据库不会在特定时间后断开连接,也没有阻止连接的防火墙。6) 使用setMaxConnectionReuseTime

我提到了一些显示类似问题的链接。然而,它没有显示任何分辨率https://community.oracle.com/thread/2183613

https://community.oracle.com/thread/2298699

使用Oracle UCP 时连接已关闭

是否有人在Oracle 12C和UCP上遇到过类似的问题??最新的UCP中有漏洞吗??

我在使用Weblogic的连接池时没有任何问题。

我认为问题正是这里对神谕问题的描述-dbjavasqlsqlexception关闭了连接。

在调用prepareStatement()(注意多线程)之前,请确保连接未关闭

也许可以添加一些日志记录,看看close()prepareStatement()之前是否真的没有关闭,并在prepareStatement()调用之前尝试为connection.isValid()记录值。

你能提供一些示例代码吗?

我遇到了类似的问题。我使用的是ucp-1.2.0.3.jar。我详细记录了我的过程,并观察到来自池的连接是

  1. 非空

  2. 未关闭

  3. 同样无效(con.isValid()返回false)

    我浏览了很多论坛,但没有太多帮助。我终于发现这个链接和类似的问题有关。因此,我更新到ucp-1.2.0.4,一切都很好。

不确定这是否是一个解决方案,但它解决了我的问题。

相关内容

  • 没有找到相关文章

最新更新