본문 바로가기
TechNical/JAVA

ORA-01000 오류 발생, Statement 돌려막기 할 경우..

by 강멍멍이 2014. 5. 15.
반응형

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를 개별로 만들어 주고 클로즈를 각각 해 주니 커서가 닫히더라..

 

여튼.. 그렇더라 -_-

반응형

댓글