在执行如下代码时,经常会出现ora-01000: maximum opencursors exceeded异常
for(int i=0;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 SCOPE=MEMORY;
系统已更改。
SQL> commit;
提交完成。