ORA-01000: 最大オープン・カーソル数を超えました。


1セッションでオープン可能な最大カーソル数を超過した場合に発生するエラー。
原因を調査する方法は以下の通り。



初期化パラメータに設定されている最大カーソル数を調べるSQL

SELECT VALUE FROM V$PARAMETER WHERE NAME ='OPEN_CURSORS';

開いているカーソルが多いセッションを調べるSQL

SELECT	 V$OPEN_CURSOR.SID
		,V$SESSION.OSUSER 
		,V$SESSION.PROCESS
		,V$SESSION.MACHINE
		,V$SESSION.TERMINAL
		,V$SESSION.PROGRAM
		,COUNT(*)
FROM	V$OPEN_CURSOR
INNER JOIN V$SESSION ON V$OPEN_CURSOR.SID = V$SESSION.SID 
GROUP BY V$OPEN_CURSOR.SID
		,V$SESSION.OSUSER 
		,V$SESSION.PROCESS
		,V$SESSION.MACHINE
		,V$SESSION.TERMINAL
		,V$SESSION.PROGRAM
ORDER BY COUNT(*) DESC 

カーソルを開いたSQL等の詳細はV$OPEN_CURSORビューで参照できる

SELECT	*
FROM	V$OPEN_CURSOR
WHERE	SID = 999		--SIDには調べたいセッションIDを指定
ORDER BY SQL_TEXT

動作確認環境:Oracle 11g