DBCP不会在Oracle中关闭游标

时间:2015-06-03 17:18:34

标签: oracle spring-data spring-jdbc jdbctemplate apache-commons-dbcp

我们正在使用DBCP2来创建连接池,jdk 1.7,Oracle 12c,ojdbc6.jar。 几天前我们的应用程序开始出现ORA-01000错误。

我使用以下查询在Oracle中查找当前打开的游标:

select a.value, s.username, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic#  and s.sid=a.sid
and b.name = 'opened cursors current';

我一直多次点击同一页面,执行相同的查询。以下是观察结果: 1.当连接池maxTotal = -1(无限制)时,许多连接被打开,而在打开的游标(值)列中,某些连接的值为1或max 2。 例如。查询的示例输出是

value      sid
1          1
1          2
1          3
  1. 当连接池maxTotal = 10时,只有10个连接被打开(上述查询返回10条记录),并且打开的游标(值)列正在增加。 例如。查询的示例输出是

    value sid 1 1 2 2 3 3 1 4 1 5 3 6

  2. 我使用的是Spring JDBCTemplate,它关闭了所有结果集,预处理语句和连接。

    我的查询是:

    1. 当连接返回池时,为什么打开游标会显示一个值?说1。
    2. 当再次使用相同的连接时,该值会增加。在从池中再次提供连接之前,DBCP是否不清除连接?
    3. 如何在再次使用之前清理连接,以便可以关闭打开的游标。
    4. 任何帮助都会很棒

0 个答案:

没有答案