Schlagwort-Archive: Database

Oracle: too many open cursors (INSERT loop)

Heute mal tatsächlich seit langem wieder ein richtiger IT-Post.

Als ich heute versuchte, eine Schleife die Daten zusammenstellt und dann in INSERT Statements verpackt und in einer großen Transaction gegen die Datenbank pustet, von MS-SQL auf ORACLE umzustellen bekam ich dabei den hier vorgeworfen.

ORA-01000: Maximale Anzahl offener Cursor überschritten

Großes Tennis – also erstmal ein bißchen googeln und siehe da.
Wenn man für jeden Befehl ein eigenes Command-Objekt öffnet, dann hält dieses auf ORACLEs Seite einen Cursor offen, das Objekt wird dann von GarbageCollection u.U. zu spät abgeräumt und man überschreitet die maximale Anzahl. *peng*

Entweder man verwendet die Command-Objekte also mehrfach, oder man ruft explizit Dispose() auf – dann funktioniert’s.

MS-SQL ist da nicht so empfindlich.

(Thread mit Lösung)