ich bin relativ neu in Sachen Datenbankprogrammierung und habe folgendes Problem: ich will von einer SQL-Datenbank einen grösseren Datensatz (~760 Rows) per java in eine andere datenbank importierten. ich habe jetzt eine schleife von 1 bis zur maximalen reihe gemacht abre nach dem import von ca 20 reihen hört er auf. kann es sein das innerhalb einer connection nur eine bestimmte anzahl anfragen zulaessig ist? bringt es etwas die connection bei jeder zeile zu erneuern? danke schonmal.
bringt es etwas die connection bei jeder zeile zu erneuern?
Generell: nein.
Aber es könnte sein, daß Deine Schleife ein wenig ungeschickt mit den Resourcen umgeht. Hier könnte es helfen, wenn Du den Codeteil hier reinposten würdest. Bitte mit PRE-Tag!
Allgemeiner Tipp zur Problemstellung, wenn du viele Statements hintereinander absetzen möchtest (ich nehme an du machst für jede Row ein Insert), dann solltest du den Batch-Modus dafür verwenden.
Dabei werden zuerst alle Statements gesammelt, und dann alle zusammen auf einmal an die Datenbank übergeben und ausgeführt. Spart ziemlich viel Zeit, da ein großer Teil des Ausführens eines Statements für die Kommunikation zwischen Anwendung und Datenbank draufgeht.
Hast du deine Statements und Reslutsets nach der Abarbeitung geschlossen? Wenn du als Fehlermeldung „too many open cursors“ bekommst ist das meistens die Ursache.
Bei mehreren Zugriffen auf eine Tabelle solltest du immer PreparedStatements benutzten, damit bereitest du das Statement in der DB vor und sendest immer nur die Parameter:
abre nach dem import von ca 20
reihen hört er auf. kann es sein das innerhalb einer
connection nur eine bestimmte anzahl anfragen zulaessig ist?
bringt es etwas die connection bei jeder zeile zu erneuern?
wie schaut’s denn mit den größen aus?
kleine oracle erfahrung: nach einer gewissen anzahl (abhängig vom temporären-tablespace und von rollback-segmenten) ein commit absetzen, da der platz ausgeht …