新手必错:ORA-01000 超出打开游标的最大数

新手必错:ORA-01000 超出打开游标的最大数

一、查询打开游标的个数。

1.1、使用如下SQL可以查询数据库配置的打开游标最大数:

show parameter open_cursors;​

1.2、使用如下SQL可以查询目前打开游标的个数:

SELECT
    SUM(a.value),
    b.name
FROM
    v$sesstat a,
    v$statname b
WHERE
    a.statistic# = b.statistic#
    AND b.name = 'opened cursors current'
GROUP BY
    b.name;

二、问题原因和解决方案。

2.1、在java代码中,执行conn.createStatement()或conn.prepareStatement()时,相当于在数据库中打开了一个cursor。尤其是createStatement方法、prepareStatement方法在循环中创建时,就非常容易出现这个问题。 2.2、正确的写法应该在循环外执行createStatement方法或prepareStatement方法。 2.3、使用Mybatis等持久层框架时,不需要手工执行createStatement方法或prepareStatement方法。

三、修改游标。

3.1、谨慎:此操作应由专业DBA操作!

alter system set open_cursors=2000 scope=both;

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×