V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
asiufasd
V2EX  ›  问与答

ORA 01000 超出打开游标的最大数 ,偶尔出现 ORA-00604: 递归 SQL 级别 1 出现错误 和 游标的错误,我应该怎么确认问题具体发生在哪里?

  •  
  •   asiufasd · 2018-01-29 19:07:04 +08:00 · 2075 次点击
    这是一个创建于 2523 天前的主题,其中的信息可能已经有所发展或是发生改变。
    补充主题问题:
    为什么我 select count(*) from v$open_cursor;查询出来的打开的游标会大于 show parameter open_cursors;配置的游标数量?设置游标需要重启吗?

    我今天要来了代码,代码里有一段是这样:
    for (int i = 0; i < list.size(); i++) {
    . . .
    String sqlQuery = "select * from table_c where timecardid=? or secondcardid=?";
    pState_query = connection.prepareStatement(sqlQuery);
    pState_query.setString(1, timecardid);
    pState_query.setString(2, timecardid);
    rs = nc_pState_query.executeQuery();

    . . .
    }
    list 的数据量比较大,我怀疑是因为这里导致的游标溢出。
    但是这个问题是在配置 DataGuard 主从备份之后才频繁发生的。对方在测试环境测试后也没有发生异常,所以我也有点拿不准。
    写的时候刚刚跟他改小了查询语句的数据,执行成功了,但是我实时执行的 select count(*) from v$open_cursor;确实发现激增,大约 12000 才降下去,我设置的 5000,这个是为什么,打开的游标会超过最大游标还不报错?改变游标需要重启吗?
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5796 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.