2013-11-28 25 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