ora-01000:超出打开游标的最大数

阅读更多

最近在项目中用到了apache的common-dbcp框架,在spring的配置文件中,加入了dataSource的配置,如下:

  
          
          
          
          
          
  
          
          
          
          
          
          
          
      

  测试,没问题。但是,在商用环境上,突然发现,经过一段时间的数据库操作,数据库连接的游标用尽,报出maximum open cursors exceeded,   排查了很久,代码里面没有未关连接的情况(因为用的是spring的jdbc模板),也没有使用任何存储过程。在万般无奈下,最后查看了配置文件,突然发现

  
 

这个配置以前没使用过(注:因为这个配置是从网上down下来的)。查看了common-dbcp的api,原来这个地方把每个connection用到的preparedStatement都缓存到池中了(具体实现机制还没看源代码,我猜想是这样),最后导致preparedStatement未释放,游标也就一直没释放,到游标最大数直接报错。

      最后,把poolPreparedStatements设置为false后,问题解决。

你可能感兴趣的:(ora-01000:超出打开游标的最大数)