본문 바로가기
Programming/오류노트

[JSP] ORA-01000 : maximum cursors exceeded

by 도낙원 2018. 4. 9.
반응형

 

     

오늘 공부하다가 발생한 오류입니다.


ORA-0100 : maximum cursors exceeded


오늘 했던 것은 txt파일로 저장된 5만개의 전국 주소를 DB에 저장시키는 것을 만들었습니다.(JSP)

밑에 작성한 것이 오류가 발생한 것입니다.




일단 제 코드라서 이해하기 어렵겠지만 간단하게 DB에 넣기위한 작업을 한 것입니다.

여기서 DB와 연결을 했고 5만개의 값을 DB에 보내기 위해 preparedStatement를 사용했습니다.

문제는 여기서 발생했습니다.

일반적으로 Statement를 사용하게되면 쿼리문 분석 -> 컴파일 -> 실행 단계를 거치지만 

반면에 preparedStatement를 사용하게 되면 이 3단계를 한번만 거치고 캐시에 담아 다음에 

또 다시 재사용을 하는 것입니다.

그래서 모든 작업이 끝나고 close()를 통해 닫아주면 그만입니다.


제가 잘못 작성한 부분은 이 부분입니다. for문 안에서 계속해서 preparedStatement를 생성하고 있었고 열었던 것을 닫지 않고 마지막 작업이 끝나고 닫으려고 하니 문제가 발생한 것입니다.

계속 생성되던 pstmt는 결국 한 세션이 열 수 있는 최대 커서 갯수를 초과하게 되고 이러한 오류가 발생하게 된 것입니다.

그래서 for문 밖으로 그 구문을 for문 밖으로 빼고 5만개 작업이 모두 끝난 후에 close()를 통해 닫아줬습니다.


하나씩 찾아들어가다 보니 결국 문제는 PreparedStatement에 대한 개념이 최고 부족했던 것 같습니다.

저와 같은 문제가 발생한다면 이 부분을 좀 생각하시면 되겠습니다. 항상 사용을 했으면 닫아줘야 이러한 오류 발생을 줄일 수 있을 것 같습니다.(close() 구문)



<고친 것>


반응형
사업자 정보 표시
난길샵 | 박현숙 | 경상북도 성주군 월항면 수죽길 98길 | 사업자 등록번호 : 256-07-01668 | TEL : 010-9909-8420 | Mail : skr04@naver.com | 통신판매신고번호 : 제2020-경북성주-52호 | 사이버몰의 이용약관 바로가기

댓글