DBAtlas · Veritabanı operasyon atlası

ORA-01000: Maximum open cursors exceeded

Oracle

Ne demek?

Bir oturum, OPEN_CURSORS parametresiyle izin verilenden fazla cursor açtı. Yeni cursor açılamıyor.

Neden olur?

Uygulamanın açtığı Statement/ResultSet nesnelerini kapatmaması (cursor leak), OPEN_CURSORS değerinin iş yüküne göre düşük ayarlanması veya döngü içinde sürekli yeni hazır ifadeler (prepared statement) hazırlanıp kapatılmaması.

Nasıl çözülür?

Açık cursor'ları izleyin: SELECT * FROM v$open_cursor WHERE sid = ... ve oturum başına sayıyı v$sesstat üzerinden görün. Asıl çözüm uygulamada her Statement/ResultSet'i finally bloğunda kapatmaktır (cursor leak giderme). Geçici çözüm olarak OPEN_CURSORS değerini artırın: ALTER SYSTEM SET OPEN_CURSORS = 1000. JDBC statement cache boyutunu gözden geçirin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar