这是一个创建于 2519 天前的主题,其中的信息可能已经有所发展或是发生改变。
补充主题问题:
为什么我 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,这个是为什么,打开的游标会超过最大游标还不报错?改变游标需要重启吗?