Maximale Anzahl offener Cursor

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich arbeite mit einer Oracle-DB (10) und erzeuge in meinem Programm mittelmäßig viele Datenbankeinträge (einige Dutzend bis wenige Hundert) auf einmal. Dabei bekam ich die Fehlermeldung ...
ORA-01000: Maximale Anzahl offener Cursor überschritten

Nun habe ich gegooglt und das einzig sinnvoll Ergebnis war, das es evtl. daran liegt, das die erzeugten ResultSets nicht schnell genug geschlossen werden. Da ich sie nicht benötige, hatte ich sie von anfang an nicht referenziert. Jetzt habe ich die folgende Änderung vorgenommen:
Code:
// vorher
(mDBCon.createStatement()).executeQuery(tInsertString + tValueString);
// nachher
(mDBCon.createStatement()).executeQuery(tInsertString + tValueString).close();

Nun werden zunächst einige mehr Einträge ausgeführt (war zumindest mein Eindruck). Dann erhalte ich aber zuerst die Fehlermeldung ...
ORA-00604: Fehler auf rekursiver SQL-Ebene 1
ORA-01000: Maximale Anzahl offener Cursor überschritten

... und dann immer wieder den Fehler ORA-01000 alleine.

Wo kann der Fehler liegen? Ich bin für jeden Ansatz dankbar.
 

Evolver

Bekanntes Mitglied
Könnte es etwas bringen, die ebenfalls nicht Referenzierten Statements, die bei mDBCon.createStatement() zurückgegeben werden, explitzit mit close() zu schließen? Da ich das an vielerlei Stellen einfügen müsste, wolle ich mich vorher mal erkundigen.
Und gäbe es dann eine Vorgabe, was zuerst geschlossen werden sollte - Statement oder ResutSet?
 

HoaX

Top Contributor
Evolver hat gesagt.:
Könnte es etwas bringen, die ebenfalls nicht Referenzierten Statements, die bei mDBCon.createStatement() zurückgegeben werden, explitzit mit close() zu schließen?
unbedingt, von alleine schließen die sich nicht...
Evolver hat gesagt.:
Und gäbe es dann eine Vorgabe, was zuerst geschlossen werden sollte - Statement oder ResutSet?

iirc sollte es reichen das statement zu schließen. aber im allgemeinen ist es immer sinnvoll in umgekehrter erstellungsreihenfolge zu schließen
 

Evolver

Bekanntes Mitglied
@HoaX:
Ich habe jetzt die Statements manuell geschlossen und siehe da, es funktioniert. Da ist wohl die Garbage-Collection zu langsam, denn wenn die Objekte richtig entsorgt werden, werden sie ja automatisch geschlossen (hab ich zumindest aus der Doc so rausgelesen).
 

HoaX

Top Contributor
das wäre mir neu dass das der gc übernimmt. du erstellst das statement, also musst auch du das wieder schließen. das ist normales verhalten ...
 

Evolver

Bekanntes Mitglied
Im JavaDoc für Statement.close() steht:
Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed. It is generally good practice to release resources as soon as you are finished with them to avoid tying up database resources.
Oder passiert das nu, wenn die zugehörige Connection geschlossen wird?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 5
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 4
A Maximale Anzahl offener Cursor erreicht Datenbankprogrammierung 3
J Maximale Anzahl von char in SQL Datenbankprogrammierung 11
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
G maximale Einträge in HSQLDB Datenbankprogrammierung 7
M Maximale Kapazität von Datenbanken Datenbankprogrammierung 2
G maximale Länge von Spalten ermitteln Datenbankprogrammierung 3
ruutaiokwu Duplikate auf bestimmte Anzahl begrenzen Datenbankprogrammierung 8
C PostgreSQL Anzahl der Spalten ermitteln Datenbankprogrammierung 2
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
Kandum MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden Datenbankprogrammierung 3
S Anzahl Datensätze in db4o Datenbankprogrammierung 2
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
B Die Anzahl der Datensaetze einer Datenbank anzeigen Datenbankprogrammierung 2
Guybrush Threepwood H2: Anzahl an Usern begrenzen Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
I Anzahl unterschiedlicher Datensätze ausgeben Datenbankprogrammierung 2
D Anzahl der Elemente im ResultSet ermitteln Datenbankprogrammierung 8
W Anzahl der Spalten eines ResultSets bestimmen Datenbankprogrammierung 5
Z Zeilen-Anzahl abfragen bei Datenbank Datenbankprogrammierung 4
G Anzahl der Datensaetze abfragen Datenbankprogrammierung 11
rambozola große anzahl an inserts bei oracle db unperformant Datenbankprogrammierung 15
S Anzahl geänderte Records Datenbankprogrammierung 2
V Anzahl der Datensätze abfragen Datenbankprogrammierung 9
B PreparedStatement - anzahl ParameterValues Datenbankprogrammierung 6
M Anzahl der Tabellen herausfinden Datenbankprogrammierung 6
M begrenzte anzahl von resultsets pro connection?? Datenbankprogrammierung 6
D Anzahl der zurückgelieferten Datensätze Datenbankprogrammierung 2

Ähnliche Java Themen


Oben