Im Moment ist der Prozess, den wir für das Einfügen von Datensätze verwenden, etwa folgendermaßen:Kann ich Savepoints zum Starten neuer Transaktionen in Oracle ersetzen?
(und beachten Sie, dass "Satz von Datensätzen" so etwas wie den Datensatz einer Person zusammen mit ihren Adressen, Telefonnummern oder anderen andere verbundene Tabellen).
- Starten Sie eine Transaktion.
- Fügen Sie eine Reihe von Datensätzen ein, die verwandt sind.
- Commit, wenn alles erfolgreich war, Rollback andernfalls.
- Gehen Sie zurück zu Schritt 1 für die nächste Reihe von Datensätzen.
Sollten wir etwas mehr so machen?
- am Anfang des Skripts Starten Sie eine Transaktion
- ein Punkt für jeden Satz von Datensätzen speichern starten.
- Fügen Sie eine Reihe verwandter Datensätze ein.
- Rollt bei einem Fehler zum Sicherungspunkt zurück, wenn alles erfolgreich ist.
- Commit die Transaktion am Anfang des Skripts.
Nachdem ich einige Probleme mit ORA-01555 hatte und einige Artikel von Ask Tom gelesen habe (wie this one), denke ich darüber nach, den zweiten Prozess auszuprobieren. Natürlich, wie Tom hervorhebt, sollte das Starten einer neuen Transaktion von den Geschäftsanforderungen definiert werden. Lohnt sich der zweite Prozess oder ist es eine schlechte Idee?
+1, interessante Frage (auch für die asktom Diskussion) – DCookie
Es wäre nützlich, wenn Sie Ihren aktuellen Wert für UNDO_RETENTION und die Zeit für das Ausführen des gesamten Skripts und die Verarbeitung von jedem Satz. –