进行批量插入的时候  出现   maximum open cursors exceeded用的ibatis操作的数据库
用的是cop3连接池
请问怎么解决

解决方案 »

  1.   

    你的脚本里面包含的语句太多了。
    解决办法有2:
    1.将脚本拆成几份,分几次插入
    2.在命令行模式下面执行,或者用sqlplus来执行sql脚本
      

  2.   

    多数应用程序写得有问题,检查一下程序,CURSOR 打开没有关闭
    SQL> SHOW PARAMETERS OPEN_CURSORS;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    open_cursors                         integer     300SQL> ALTER SYSTEM SET OPEN_CURSORS=400;System altered
      

  3.   

    ibatis  是用  spring 的支持 getSqlMapClientTemplate()  应该不存在  连接 未关闭问题
      

  4.   

    打开的游标超过最大数了,有两种解决方案:
    1.优化SQL语句或流程。
    2.如楼上说的,增加打开游标的最大数。
      

  5.   

    ALTER SYSTEM SET OPEN_CURSORS=
    但这不是解决问题的方法,不治本在pl/sql里注意 colse 游标
    在程序端注意关闭连接,比如java: prepstmt.executeUpdate(); prepstmt.close();
      

  6.   


    是啊   ALTER SYSTEM SET OPEN_CURSORS=    这个改了也没用  程序  跑时间长了 一样崩溃
      

  7.   

    语句 如何 优化   插入  语句 怎么优化?   好像insert  没有 优化的说法吧
      

  8.   

    FYI:
    http://www.orafaq.com/forum/t/34813/0/
      

  9.   

    这个一般是因为程序中没有及时关闭游标导致的. 理论上讲,你可以加大 OPEN_CURSORS 参数的值,但是如果没有好的写程序的习惯, 增加了100还是可能会提示出错的.你可以把逻辑写在服务器上,如果是显式打开游标,则需要显式地去关闭,使用隐式的则系统会自动关闭.