java.sql.SQLException: ORA-00604: 순환 SQL 레벨 1 에 오류가 발생했습니다
ORA-01000: 최대 열기 커서 수를 초과했습니다
위와 같은 오류가 날 때는 Statement 나 ResultSet 을 open 하기만 하고 close 가 없어서 나는 오류 입니다.
특히 while, for 같은 루프문에서 적절한 위치에서 close 를 하고 있는 지 확인할 필요가 있습니다.
아래와 같은 샘플 코드가 있다고 했을 때 rsColumns.close(); 를 누락시켰을 때 위와 같은 오류가 발생되었다. 실제 코드는 while loop 가 길어서 ResultSet 닫는 것을 놓쳐도 눈에 잘 띄지 않아서 오류를 찾는데 어려움이 있었다.
ResultSet rsTables = dbMeta.getTables(null, schemaName, "%", types);
int count = 0;
while (rsTables.next()) {
String countQuery = "SELECT count(*) AS TOTAL_COUNT “
+ ”FROM ALL_COL_COMMENTS “
+ “WHERE OWNER = 'GPDBD' AND TABLE_NAME= ? AND COMMENTS is not null ";
PreparedStatement countPsmt = connection.prepareStatement(countQuery);
countPsmt.close();
ResultSet rsColumns = dbMeta.getColumns(null, schemaName, tableName, "%");
while( rsColumns.next() )
{
String typeName = rsColumns.getString("TYPE_NAME");
String colName = rsColumns.getString("COLUMN_NAME");
} // end of while
rsColumns.close();
}
rsTables.close();
'컴퓨터활용 > 자바' 카테고리의 다른 글
키보드로 값을 입력받아서 출력 (0) | 2013.07.17 |
---|---|
JEUSMain.xml 과 web.xml (0) | 2012.06.07 |
JVM Garbage Collection 순간 포착 (0) | 2012.05.25 |
java 문자열 처리 (0) | 2012.04.26 |
Transaction rolled back because it has been marked as rollback-only (0) | 2012.04.25 |