asiufasd
V2EX  ›  问与答

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

  •  
  •   asiufasd · Jan 29, 2018 · 2657 views
    This topic created in 3054 days ago, the information mentioned may be changed or developed.
    补充主题问题:
    为什么我 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,这个是为什么,打开的游标会超过最大游标还不报错?改变游标需要重启吗?
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3203 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    ♥ Do have faith in what you're doing.