• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > Oracle出现超出打开游标最大数的解决方法

Oracle出现超出打开游标最大数的解决方法

作者:hbiao68 字体:[增加 减小] 来源:互联网 时间:2017-05-11

hbiao68通过本文主要向大家介绍了oracle 游标超出,oracle存储过程游标,oracle中的游标,oracle 游标,oracle游标详解等相关知识,希望本文的分享对您有所帮助

本文实例讲述了Oracle出现超出打开游标最大数的解决方法。分享给大家供大家参考,具体如下:

Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现这个问题。因为游标一直在不停的打开,而且没有关闭。

一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,假如不需要使用结果集(ResultSet)的数据,就马上将Statement或PreparedStatement关闭。

对于出现ORA-01000错误这种情况,单纯的加大open_cursors并不是好办法,那只是治标不治本。实际上,代码中的隐患并没有解除。而且,绝大部分情况下,open_cursors只需要设置一个比较小的值,就足够使用了,除非有非常非凡的要求。

假如你不使用连接池,那么就没有什么问题,一旦Connection关闭,数据库物理连接就被释放,所有相关Java资源也可以被GC回收了。

但是假如你使用连接池,那么请注重,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库答应的最大值”的错误,导致程序无法正常访问数据库。

正确的代码,如下所示:

for(int i=0;i<balancelist.size();i++)
{
  prepstmt = conn.prepareStatement(sql[i]);
  prepstmt.setBigDecimal(1,nb.getRealCost());
  prepstmt.setString(2, adclient_id);
  prepstmt.setString(3, daystr);
  prepstmt.setInt(4, ComStatic.portalId);
  prepstmt.executeUpdate();
  //循环到一定数量就要关闭,防止出现超出最大游标数量
  prepstmt.close();
}

</div>

希望本文所述对大家Oracle数据库程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle出现超出打开游标最大数的解决方法

相关文章

  • 2017-05-11Oracle教程之pl/sql简介
  • 2017-05-11PL/SQL实现Oracle数据库任务调度
  • 2017-05-11如何在Oracle中导入dmp文件
  • 2017-05-11Oracle7.X 回滚表空间数据文件误删除处理方法
  • 2017-05-11oracle iSQL*PLUS配置设置图文说明
  • 2017-05-11oracle查询重复数据和删除重复记录示例分享
  • 2017-05-11Oracle EXP和IMP用法和介绍
  • 2017-05-11误删除$ORACLE_HOME/dbs下的参数文件、密码文件快速重建的方法
  • 2017-05-11ORACLE 10g 安装教程[图文]
  • 2017-05-11Oracle索引质量介绍和分析脚本分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • RAC cache fusion机制实现原理分析
    • [Oracle] Data Guard 之 浅析Switchover与Failover
    • oracle SQL命令大全
    • Oracle 触发器的使用小结
    • oracle正则表达式regexp_like的用法详解
    • oracle初始化参数设置
    • PL/SQL Number数字类型函数
    • Oracle 安装和卸载问题收集(集合篇)第1/6页
    • 计算机名称修改后Oracle不能正常启动问题分析及解决
    • oracle的归档模式 ORACLE数据库归档日志常用命令

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有