DBAtlas · 데이터베이스 운영 아틀라스

ORA-01000: Maximum open cursors exceeded

Oracle

의미

세션이 OPEN_CURSORS 파라미터가 허용하는 것보다 많은 커서를 열었다. 새 커서를 열 수 없다.

원인

애플리케이션이 연 Statement/ResultSet 객체를 닫지 않음(커서 누수), 워크로드에 비해 OPEN_CURSORS가 너무 낮게 설정됨, 또는 루프에서 새 prepared statement를 계속 준비하고 닫지 않음.

해결 방법

열린 커서를 모니터링한다: SELECT * FROM v$open_cursor WHERE sid = ... 세션별 개수는 v$sesstat으로 확인한다. 근본 해결은 애플리케이션에서 모든 Statement/ResultSet을 finally 블록에서 닫는 것이다(커서 누수 제거). 임시 방편으로 OPEN_CURSORS를 늘린다: ALTER SYSTEM SET OPEN_CURSORS = 1000. JDBC statement cache 크기를 검토한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목