最近一个项目使用了Lucene,其中创建索引后需要同步数据库表,循环2000个id同步数据时出现
ORA-01000: maximum open cursors exceeded
error occurred at recursive SQL level 1
明显cursor开的太多了
于是
。。
。。
查资料:在oracle command line中执行
1:显示当前数据库的cursor最大数
show parameter open_cursors;
2:设置最大数
alter system set parameter= 65535 scope=both;
这里直接设置最大。。。
其中scope参数的意思:
- SCOPE=MEMORY:只改变当前实例运行,亦即初始化参数改变了只对当前实例有效,当实例重启之后,初始化参数值还原。
- SCOPE=SPFILE:只改变SPFILE的设置。亦即改变初始化参数文件内容。实例重启后参数生效。
- SCOPE=BOTH,既改变实例也改变SPFILE。指定这个选项相当于不带参数的alter system语句。需要注意的是,如果修改静态参数,必须指定SPFILE参数(必须表明SCOPE=MEMOEY或者SCOPE=SPFILE),否则会报错。