2013-11-28 27 views
0

我有两个Oracle 11G安装。我可以运行一个脚本,将37MB数据库导入到其中一个中,而没有任何问题(安装A)。在另一个(安装B)中,当我使用完全相同的文件运行完全相同的脚本时,它会得到“ORA-01000:超出最大打开游标数”。我将最大打开的游标增加到20,000,但是当脚本到达20,000行时,它会停止,并出现相同的ORA-01000错误。正在工作的安装已将最大打开游标设置为300.Oracle设置防止打开的游标关闭?

很明显,脚本或SQL没有问题,因为它在一个Oracle数据库中工作。所以在其他Oracle实例中必须有一个防止打开游标关闭的设置。会是什么呢?

安装A有效。 数据库= Oracle Oracle数据库11g企业版版本11.2.0.1.0 - 64位产品 使用分区,OLAP,数据挖掘和实际应用测试选项。 Driver = Oracle JDBC驱动程序11.2.0.1.0。

安装B不起作用。 数据库= Oracle Oracle数据库11g企业版版本11.2.0.3.0 - 64位产品 使用分区,自动存储管理,OLAP,数据挖掘 和Real Application Testing选项。 Driver = Oracle JDBC驱动程序11.2.0.3.0。

+1

我觉得这个问题应该是:“为什么甲骨文打开一个新的光标(显然)每个记录您可以比较这一切的Oracle参数查看'SELECT * FROM V $ PARAMETER'。看看Oracle参数[cursor_sharing](http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams035.htm) –

+0

嗨,你能请描述你怎么能解决这个问题,这会有很大的帮助,我们也有类似的情况,提前致谢 –

+0

已经很久了,我不记得它是如何解决的。 – Rubicksman

回答

0

我会建议检查会话中打开的游标。如果您看到10.000条语句,都是类似的,但是打开游标,代码中会出现错误。

我自己觉得这样做最简单的方法:

connect sys 

alter system flush shared_pool; /* Removes everything can be finished, the trees hinder my view of the forest. */ 

/* Overall overview. */ 
select * 
from v$sqlarea 

/* Open cursors per session. */ 

select * 
from v$open_cursor