Letztens haben wir nach Hardware- und JDBC-Treiber-Wechsel folgende Fehlermeldung bekommen:

ORA-01000: too many open cursors (oder auf deutsch: maximale anzahl offener cursor überschritten)

Tatsächlich gab es noch 2 Statements im Application-Server, bei das Statement nicht geschlossen wurde. Man findet die betreffenden Statements mit folgendem SQL:

  1. select
  2.         c.sid,
  3.         c.address,
  4.         c.hash_value,
  5.         COUNT(*)       as "Cursor Copies"
  6. from    v$open_cursor c
  7. group by
  8.         c.sid,
  9.         c.address,
  10.         c.hash_value
  11. having
  12.         count(*) > 2
  13. order by
  14.         3 desc

Unter Umständen kann man im Live-System beobachten, wie die Anzahl der offenen Cursor wächst.

Offensichtlich hat uns der vorherige JDBC-Treiber das nicht-Schliessen des Statements vergeben.