쥔장에겐 완전 사랑하는 사람이 있어요 ^-^♡


JAVA로 오라클에 들어 붙는 프로그램을 만들다 보면 이런 오류를 만나는 순간이 올 수도 있다.

 

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

 

대게 스테이먼트나 리절트 셋을 클로즈를 안 해 주면 리미트에 도달 했을때 저런게 난 다는데

아래와 같이 다중으로 쿼리를 날릴 때 발생을 한 경우가 있다.

 

Satement stmt = null;

ResultSet rs_1 = null;

ResultSet rs_2 = null;

ResultSet rs_3 = null;

 

stmt = con.createStatement();

 

rs_1 = stmt.executeQuery("select * from table1);

rs_2 = stmt.executeQuery("select * from table2);

rs_3 = stmt.executeQuery("select * from table3);

 

stmt.close();

rs_1.close();

rs_2.close();

rs_3.close();

 

하란대로 클로즈를 다 해 줬는데 왜 그럴까..?

 

select * from v$open_cursor

 

으로 확인해 보면

select * from table1, select * from table2 쿼리가 안 날아가고 그대로 있는 걸 볼 수가 있다.

 

rs_1.close() , rs_2.close() 해 줬는데...

 

stmt를 돌려 먹으면 앞 쪽에 실행한 쿼리들은 커서가 안 닫히고 살아 있는 걸 체험 할 수 있다.

마지막에 실행된 쿼리의 커서만 닫힌다.

그래서 쿼리 별로 stmt를 개별로 만들어 주고 클로즈를 각각 해 주니 커서가 닫히더라..

 

여튼.. 그렇더라 -_-

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Keizwer Keiz

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2017.03.21 16:46
    댓글 주소 수정/삭제 댓글
    비밀댓글입니다


카테고리

:: Keiz Story :: (349)
TechNical (197)
Another (145)
ENG, JPN Lang. (7)

Statistics Graph
Total : 508,695
Today : 28 Yesterday : 51

달력

«   2017/08   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Google

글 보관함

0
hit counter