永发信息网

jdbc 查询5万条数据出现 ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数

答案:2  悬赏:80  手机版
解决时间 2021-03-30 08:41
jdbc 查询5万条数据出现 ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数
最佳答案
出现ORA-01000错误基本都是有程序没关闭游标,多出现于java程序使用连接池连接数据库的情况下,打开了statement没关闭就把连接放回了连接池或者循环打开statement对象而不关闭。
你的这段代码并无问题,建议检查一下其他地方,有没有上面说的情况。追问我没有使用连接池 查询什么都没有问题 就是在处理结果集的时候处理到48855条的时候出的问题,而且我的finally中也finally{ DBUtil.close(pre); DBUtil.close(stat); DBUtil.close(conn);}
难道只有改变数据库游标数量这一个办法了吗???追答恐怕改游标数量都不一定能解决问题。不过你可以试试。你先看看打开了哪些游标:
select * from v$open_cursor

另外还可以尝试select的时候做分页,将每页数量减少,看能否绕过这个问题。追问使用select * from v$open_cursor以后看到了这些:

追答就只有这几条吗?应该有很多条吧。你重点关注SID,User_name和SQL_Text这三个字段
全部回答
就这段代码本身来说没啥问题,只是要在finally里加上 pre.close()
代码不完整,没办法判断
只能建议你使用select * from v$open_cursor查看当前打开了哪些游标
在循环过程中创建Statement后一定要及时关闭,否则很容易就游标超出了追问我在finally{ DBUtil.close(rs); DBUtil.close(stat);DBUtil.close(conn);}释放了资源了
就是在向list里面保存实体类的时候保存到48855条记录时候出现的游标
超出打开游标的最大数,是不是jdbc本身查询大数据量导致的啊追答数据量大跟游标数没关系,简单一点,你可以理解为打开一个ResultSet就会打开一个游标,就跟你打开一个文件就占用一个句柄一样
如果你不知道怎么检查代码,那就select * from v$open_cursor where user_name=用户名,看看哪些语句占用了游标,然后再从代码里相应ResultSet或Statement有没有关闭
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1到33每6个一组能组成多少个123
假设A君每月正常工作时间的工资是1200元,本
社会,社会口碑好不好,社会评价怎么样
一个女生发了891011给我,什么意思哦
对阔别30年马上要见面的战友说的话
电风扇没油了不转怎么办?
烟台蓝白的工资大概能拿到多少钱
歌词里有whatthefuck不就黑色然后就叭叭叭叭
游韩天衡美术馆 作文600初二
福建沙县小吃的利润空间有多大?
福克斯8万公里保养需要哪些
怎样在美国goodwill 买二手东西
先后起诉合同不同诉求是不是属于一事二理
猪为什么没脑子
发票联上的现金收讫和转账收讫代表什么
推荐资讯
多空角力赛是什么意思
日本中国电压多少伏
尐什么意思
在plc梯形图中若遇到并联支路是先执行两并联
给车挂牌啥叫公户?啥叫私户
65mn钢板热冲压孔收缩比例
“物质本身是纯粹的思想的创造物和纯粹的抽象
足球比赛中肩膀顶到球算不算手球?
电力通信设计可以评电力专业程师职称吗
绣眉结痂12天不小心用棉签弄掉了块是不是就不
如图所示,足够长的传送带与水平面夹角为θ,
求教下 アタイがアンタの楽しみ夺うわけない
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?