前言
最近实验室一直的一个运维项目频频在Oracle上出错,想着错误还挺典型,做一个记录,以供后续参考学习使用。
运维记录
1. ORA-01000: 超出打开游标的最大数
问题描述:需要开多进程遍历对象集合,并且将对象数据存入到Oracle数据库中,测试报超出Oracle游标最大数的错误。
知识介绍:
Oracle的游标数cursors:游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。(参考https://www.cnblogs.com/guohu/p/11007352.html)
游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理
一般Oracle默认游标数OPNE_CURSORS为300(足以够用),最大为1000
解决方法:
1. 手动在Oracle中增大游标数