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();
}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle
, 超出
, 解决方法
, 打开游标
最大数
oracle 游标超出范围、超出打开游标的最大数、超出游标最大数、超出打开游标最大数、超出过有游标的最大数,以便于您获取更多的相关知识。

时间: 2024-10-26 05:31:39

Oracle出现超出打开游标最大数的解决方法_oracle的相关文章

Oracle数据表中的死锁情况解决方法_oracle

在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定: 1.查找被锁定的表: select object_name,session_id,os_user_name,oracle_username,process,locked_mode,status from v$locked_object l, all_objects a where l.object_id=a.object_id; 如果想知道具体是哪

win x64下安装oracle 12c出现INS-30131报错的解决方法_oracle

本文为大家分享了安装oracle 12c出现[INS-30131]报错的解决方案,供大家参考,具体内容如下 解决方案: 第一步:控制面板>所有控制面板项>管理工具>服务>SERVER启动 第二步:控制面板>所有控制面板项>管理工具>计算机管理>系统工具>共享文件夹>共享右键单击"共享">新建共享> 点击"下一步">单击"浏览">选择"本地磁盘(C:)&q

ORA-01000: 超出打开游标的最大数 如何处理?

问题描述 先不考虑在oralce中增大游标数.我的需求是先查询一张表,while(rs.next())进行处理,根据处理结果,分别先3个表插入或者更新数据(一个事物).使用的是proxool连接池.我先在程序中取得两个连接,一个查询,另一个进行批量更新删除.然后再循环中处理,循环末尾把批量删除preparestatement关掉,结果出现ora01000.后来改用statement的batch()还是出ora01000,忘高手可以教导方法解决这个问题,不甚感激. 问题补充:WAMING5 写道

Jquery实现网页跳转或用命令打开指定网页的解决方法

本篇文章是对使用Jquery实现网页跳转或用命令打开指定网页的解决方法进行了详细的分析介绍,需要的朋友可以参考下   Jquery实现网页跳转或用命令打开指定网页!location.href = "www.jb51.net"; location.href = "aa.aspx";

Win7系统右键计算机不能打开管理选项的解决方法

  Win7系统右键计算机不能打开管理选项的解决方法           Win7系统右键计算机不能打开"管理"怎么办?Win7操作系统使用一段时间之后,右击计算机中的"管理"点击后没有反应,所以也就不能弹出"计算机管理"窗口,下面小编就给大家带来Win7系统右键计算机不能打开管理选项的解决方法,一起来看看吧. 解决方案: 1.在运行窗口中输入:regedit(快捷键:win+r); 2.将注册表中: [HKEY_LOCAL_MACHINESOF

wps安装后文件的默认打开方式还是office解决方法

不知道大家现在是不是和小编一起都已经使用WPS 2013了呢?不过金山WPS Office兼容微软Office文档,所以安装wps后文件默认打开方式还是office,这可怎么办呢?下面为大家带来解决方法. 安装wps后文件的默认打开方式还是office解决方法: 1. 点击开始→控制面板,选择大图标,找到默认程序; 2. 进入默认程序后 选择 将文件类型或协议与程序关联; 3. 点击一下当前默认值,即可按照当前的默认值排序 找到 MicroSoft Office 并双击此项目; 4. 在弹出的对

win7打开记事本出现乱码解决方法汇总

  win7打开记事本出现乱码解决方法汇总.造成记事本打不开的原因有很多.其中包括你电脑的字体库不充分,通过记事本打开及保存的编码不正确,软件故障以及兼容性的问题.也有可能不是而被软件或者人为改动了等情况.所以要根据具体情况来分析记事本打开出现乱码的故障. 解决方法: 1.最简单的方法就是将你的txt文档的后缀名改掉,要看你改成原作者所编辑的格式,比如你原先是word文档格式,保存的时候保存的是txt格式,这 样只能尝试改回doc格式,然后在用word打开即可,查看能不能显示正常.这种情况的解决

xp系统无法打开网上邻居的解决方法

  网上邻居一直是电脑中常见的功能,但是我们却不常使用,只有在设置局域网的时候,需要在网上邻居里修改一些参数,但是有时候我们也会遇到网上邻居打不开的现象,点击桌面上的图标也没有任何反应,其他的图标都很正常,只有网上邻居无回应,这是什么回事呢?下面小编来教一些也遇到这种状况的朋友们,网上邻居无回应该怎么操作! xp系统无法打开网上邻居的解决方法: 1.我们用鼠标点击我的电脑右键,看到栏目中有一个属性选项,我们选择点击打开,然后看到计算机名的选择打开,然后看看我们的选项卡中是不是和需要设置的局域网是

jQuery Dialog 打开时自动聚焦的解决方法(两种方法)_jquery

下面给大家介绍两种方法解决jQuery Dialog 打开时自动聚焦问题.具体实现方法大家可以参考下本文. 方法一: p1_dialog_seniorSearch.dialog({ title:"高级查询", autoOpen:false,//默认关闭 modal: true,//开启遮罩层 width:570, height:330, buttons: { "查询":function(){ seniorSearch(1,20) } , "关闭"