ORA-01000: Maximum open cursors exceeded
OracleO que significa?
Uma sessão abriu mais cursores do que o permitido pelo parâmetro OPEN_CURSORS. Nenhum cursor novo pode ser aberto.
Por que acontece?
A aplicação não fecha os objetos Statement/ResultSet que abre (vazamento de cursores), OPEN_CURSORS está definido baixo demais para a carga de trabalho, ou novos prepared statements são preparados continuamente em um loop e nunca fechados.
Como resolver
Monitore os cursores abertos: SELECT * FROM v$open_cursor WHERE sid = ... e veja a contagem por sessão via v$sesstat. A correção real é fechar todo Statement/ResultSet em um bloco finally na aplicação (eliminando o vazamento de cursores). Como contorno, aumente OPEN_CURSORS: ALTER SYSTEM SET OPEN_CURSORS = 1000. Revise o tamanho do statement cache do JDBC.