ORA-01000 : 최대 열기 커서수를 초과했습니다.

[ 문제 상황 ]
특정 함수안에 open fetch close 하는 다이나믹 커서가 존재했는데, 마지막 Close 처리를 하지 않았습니다.
개발 시,  그 함수를 자주 사용 했습니다.  어느날  "ORA-01000 : 최대 열기 커서수를 초과했습니다."라는 에러가
발생했습니다. 
 
 

 

[ 분석 ] 
Open된 Cursor를 close를 하지 않으면 해당 함수를 1번 사용 할 때마다 해당 세션이 쌓입니다. 저는 그것을
v$Open_cursor View에서 사실을 확인 할 수 있었습니다. 데이터베이스는 사용가능한 Cursor 수가 있으며,
그 임계치 초과하게 되면  Session을 생성하지 않아, 신규 Session 으로 접속 시도하면, 실패 되는 것을 확인했습니다.

 

 
 
[ 대응 ]
 1. Close 코드 보완
   : 업무상 One 클릭에 수십번 ~ 수백번 사용 할 수 있는 함수이기 때문에, Close 처리코드로 추가하여 보완했습니다.
     해당 함수를 수십번 호출 후, v$Open_cursor에서 Session 수치 확인해보니, 더 이상 Session이 쌓이지 않음을
     확인했습니다.
 

 

 2. Session 정리
    만약 위 에러메시지를 만난다면 이미 세션이 많이 쌓인 상태 일 것입니다. 
    문제되는 세션은 정리를 해줘야 합니다. 
    개발자는 session kill 할려면 insufficient privilege 에러가 발생되므로, DBA에게 Session Kill 요청해야합니다.
 

 

  3. 문제 커서 찾기 SQL 
문제 커서 찾기 및 쌓인 커서 확인