超出最大开放游标 - Oracle 11g | ibatis 2.3.4 |春天3.0.3

时间:2013-09-15 01:25:46

标签: oracle ibatis

我们最近从Sybase迁移到Oracle 11g数据库。我们的应用程序使用spring 3.0.3和IBATIS 2.3.4与数据库进行交互。 最近,我们已经开始面临ORA-01000最大开放游标超出异常。 我们与DBA进行了交谈,他确认对于每一行插入,我们占用一个不正确的光标。 DBA设置的游标大小为300。

您能否建议我们如何通过ibatis配置或Java代码处理此问题? 我们从未遇到过Sybase的这个问题。

DAO类中的当前代码结构:

try{
    sqlMapClient.startTransaction();
    sqlMapClient.startBatch();

    for(...){
        sqlMapClient.insert(<in table 1>);
        sqlMapClient.insert(<in table 2>);
    }

    sqlMapClient.executeBatchDetailed();
    sqlMapClient.commitTransaction();
}

catch(..){

}

finally{

    sqlMapClient.endTransaction();

}

注意:我们无法执行中间提交,因为操作需要全部或不执行。

1 个答案:

答案 0 :(得分:0)

您可以使用以下语句增加光标编号。只有DBA用户才能执行以下语句。如果您的pl / sql编码存在性能问题,则会出现此问题。请尝试调整procedure / sql。

ALTER SYSTEM SET open_cursors = 400 SCOPE=BOTH;