Oracle-Problem mit delete von vielen Datensätzen
-
Hallo allerseits,
ich habe auf eine Tabelle mit ca. 3,8 Mio Datensätzen ein
delete from tabelle;
gemacht, damit ich, falls bei der nachfolgenden Insert-Funktion (dort wird sie neu gefüllt) etwas schiefgeht, die Möglichkeit eines Rollbacks habe.
Nun dauert das Delete auf dem Datenbankserver ca. 22 Minuten und schreibt mir die Archive-Logs voll.
Meine Frage nun:
Gibt es (ausser truncate; weil nicht rollback fähig) eine Möglichkeit, eine Datenbanktabelle zu leeren mit der Option falls ein Fehler beim späteren Insert entsteht über ein Rollback den alten Zustand wieder herzustellen?Vielen Dank
Fishmac
-
Nein. Tabelle umbenennen, neue erstellen und einfügen.
Habe auch schon bemerkt das MSSQL auch sehr lange braucht um Daten zu löschen.
Dort gibt es zwar auch Truncate aber wenn die Tabelle in einer Replikation ist geht das nicht.
-
hmm irgendwie hab ich dein Problem noch nicht verstanden:
Du hast doch z. B. die Tabelle "table" in der Datensätze drin sind.
Jetzt fügst du neue hinzu (INSERT ist in dem Fall eine Transaktion) und warum musst du dann die bisherigen eingetragnenen löschen? Die sind doch schon eingetragen?Mach doch deine INSERTS und bei einem Fehler in einem INSERT rollbackst du alle INSERTS.
-
Danke allerseits, aber Anforderung ist revidiert auf truncate !!
@ac!d: Es sollte alle Datensätze der Zieltabelle gelöscht werden und mit einer neuen Lieferung gefüllt werden !
Fishmac