问题描述
亲爱的汤姆,
我正在使用Oracle 11g数据库,一个生产Java Web应用程序正在使用,它是在Jdeveloper 11.1.1.5.0中编写的。
当系统进行简单的UI记录更新时,没有保存后生成的泄漏连接计数。
简报:
查看日志后,错误显示如下:
<[活动] 执行线程: '13 '用于队列: 'weblogic.kernel.Default (自整定)'> <> <1612946549483> <强制释放非活动连接 “weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection @ 9b65” 返回到连接池 “xxx_nonXA”,当前由: java.lang.Exception保留
:
在xxxx.xx.xxx.xxx.xxx.bean.RoleCommonBean.com mitSaveUpdate(RoleCommonBean.java:256)
=> 对于 ((RoleCommonBean.java:256),它显示 “operationBinding.exe cute()
=> 在Oracle Weblogic Server中,参数 “非活动连接超时” 已设置为零,并且
还启用了 “已启用删除受感染的连接”。
问题提出:
Q1) 是否有任何 “异常处理” 或其他需要改进的Java程序,以减少此错误?有什么例子吗?
Q2) 我们是否需要调整上述参数的设置?这2个参数有什么用?
Q3) 什么是连接池?您是否介意给出一个示例,以显示对与oracle数据库的JDBC应用程序连接的透彻理解?
Q4) 为减少 “泄漏的连接计数” 而提供给我的任何指示?
谢谢你的关注
最好的问候
大卫
我正在使用Oracle 11g数据库,一个生产Java Web应用程序正在使用,它是在Jdeveloper 11.1.1.5.0中编写的。
当系统进行简单的UI记录更新时,没有保存后生成的泄漏连接计数。
简报:
查看日志后,错误显示如下:
:
在xxxx.xx.xxx.xxx.xxx.bean.RoleCommonBean.com mitSaveUpdate(RoleCommonBean.java:256)
=> 对于 ((RoleCommonBean.java:256),它显示 “operationBinding.exe cute()
=> 在Oracle Weblogic Server中,参数 “非活动连接超时” 已设置为零,并且
还启用了 “已启用删除受感染的连接”。
问题提出:
Q1) 是否有任何 “异常处理” 或其他需要改进的Java程序,以减少此错误?有什么例子吗?
Q2) 我们是否需要调整上述参数的设置?这2个参数有什么用?
Q3) 什么是连接池?您是否介意给出一个示例,以显示对与oracle数据库的JDBC应用程序连接的透彻理解?
Q4) 为减少 “泄漏的连接计数” 而提供给我的任何指示?
谢谢你的关注
最好的问候
大卫
专家解答
这通常是一个应用程序编码问题-你运行一段代码,它采取了一条路径,最终永远不会达到语句和/连接的适当 “关闭”,因此你有一个泄漏的连接。
这过去以 “没有更多的连接可用” 的错误结束,但因为问题是如此普遍:-(你提到的寻找非活动连接的设置应运而生,因此我们开始记录 “泄漏” 的连接,即,weblogic关闭了它,因为应用程序没有。
关于正确关闭报表等的详细信息
https://docs.oracle.com/cd/E13222_01/wls/docs103/jdbc/troubleshooting.html#wp1024080
同样常见的罪魁祸首是本地打开现有连接,例如
因此,您已经打开了另一个已经传递给您的连接实例。你最终会打开两个,关闭一个
这里有一个很好的连接池介绍
https://docs.oracle.com/en/database/oracle/oracle-database/18/tdpjd/using-java-with-oracle-database.html#GUID-8C73108B-E0F3-4CD5-A813-909B339339BB
我们的github页面上有代码示例,例如
https://github.com/oracle/oracle-db-examples/blob/master/java/jdbc/BasicSamples/UCPSample.java
还要查看使用JDBC转储查找问题代码的MOS note 1502054.1。
这过去以 “没有更多的连接可用” 的错误结束,但因为问题是如此普遍:-(你提到的寻找非活动连接的设置应运而生,因此我们开始记录 “泄漏” 的连接,即,weblogic关闭了它,因为应用程序没有。
关于正确关闭报表等的详细信息
https://docs.oracle.com/cd/E13222_01/wls/docs103/jdbc/troubleshooting.html#wp1024080
同样常见的罪魁祸首是本地打开现有连接,例如
public ... MyDbRoutine(Connection c, .....)
{
c = [initiate a connection]
}因此,您已经打开了另一个已经传递给您的连接实例。你最终会打开两个,关闭一个
这里有一个很好的连接池介绍
https://docs.oracle.com/en/database/oracle/oracle-database/18/tdpjd/using-java-with-oracle-database.html#GUID-8C73108B-E0F3-4CD5-A813-909B339339BB
我们的github页面上有代码示例,例如
https://github.com/oracle/oracle-db-examples/blob/master/java/jdbc/BasicSamples/UCPSample.java
还要查看使用JDBC转储查找问题代码的MOS note 1502054.1。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




