- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORA-01000 maximum open cursors exceeded 超出打开游标最大数原因与解决方案
处理超出打开游标的最大数异常(ORA-01000: maximum open cursors exceeded)
在执行如下代码时,经常会出现ora-01000: maximum open cursors exceeded异常for(int i=0;ibalancelist.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();}1. 检查数据库中的 OPEN_CURSORS 参数值。Oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS 指定一个会话一次最多可以拥有的游标数。缺省值为 50。要获得数据库中 OPEN_CURSORS 参数的值,可以使用以下查询: SQL show parameter open_cursors;NAME TYPE VALUE------------------------------------ ----------- ---------------open_cursors integer 300
修改open_cursors
SQL alter system set open_cursors=1000;
系统已更改。
SQL commit;
提交完成。
SQL show parameter open_cursors;
NAME TYPE VALUE------------------------------------ ----------- ---------------------open_cursors integer 1000
重要的是将 OPEN_CURSORS 的值设置得足够大,以避免应用程序用尽所有打开的游标。应用程序不同,该值也不同。即便会话打开的游标数未达 OPEN_CURSORS 指定的数量(即设置的值高于实际需要的值),也不会增加系统开销。2. 获取打开的游标数。下面的查询按降序显示用户“SCOTT”为每个会话打开的游标数。 SQL select o.sid, osuser, machine, count(*) num_curs 2 from v$open_cursor o, v$session s 3 where user_name = SCOTT and o.sid=s.sid 4 group by o.sid, osuser, machine 5 order by num_curs desc; SID OSUSER MACHINE NUM_CURS----------------------------------------------------- 217 m1 1000 96 m2 10 411 m3 10 50 test 9请注意,v$open_cursor 可以跟踪会话中 PARSED 和 NOT CLOSED 的动态游标(使用 dbms_sql.open_cursor() 打开的游标)。它不会跟踪未经分析(但已打开)的动态游标。在应用程序中使用动态游标并不常见。本模式的前提是未使用动态游标。3. 获取为游标执行的 SQL。使用在以上查询结果中找到的 SID 运行下面的查询:SQL select q.sql_text 2 from v$open_cursor o, v$sql q 3 where q.hash_value=o.hash_value and o.sid
文档评论(0)