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