Hallo, mein Name ist Christoph Jahn. Ich bin ein Softwareentwickler und Fotograf aus Leipzig.

ORA-00257: archiver error. Connect internal only, until freed.

2013-02-18

Was?

Mit dem Fehler: "ORA-00257: archiver error. Connect internal only, until freed." begrüßte mich heute morgen unsere Oracle Datenbank, nachdem ich über Nacht Teildaten aus einem Produktiv- in unser Entwicklersystem übernommen hatte. Nun ja - sagen wir mal – gerne übernommen hätte.

Wie?

Während der Übernahme habe ich erst alte Daten aus den Tabellen gelöscht, die später durch Neue ersetzt werden sollten. Da es sich um knapp 300 einzelne Tabellen handelte, von der ich für jede eine "CTL" Steuerdatei und eine "LOAD" Datendatei für den Oracle SQLLoader hatte, habe ich den Importvorgang mit einem Skript automatisiert. Erst Tabellen, einen bestimmten Datenkreis betreffend, per SQL-"DELETE" aus der Tabelle löschen, dann per SQLLoader "APPEND" in die Tabelle einfügen.

Oh!

Soweit so gut. Während der ersten Stunden Importvorgangs hatte ich (fast) alle wichtigen Daten im Auge: UNDO-Tablespace, REDO-Logs, Indexfiles, Datenfiles. Es schien alles wunderbar zu laufen. Nur wurde ich heute mit dem Fehler begrüßt. Vergessen hatte ich den ARCHIVE LOG Modus, in dem unsere Entwicklerdatenbank (wie auch das Produktivsystem) betrieben wird. So ergab es sich also (klingt wie ein Märchen, oder?) das der gute Server auf der Platte für die Archivelogs pro Minute zwischen 3 und 5 neue ARC-Dateien à 20 MB angelegt hat. Nachts um 23 Uhr war die Platte dann voll und 43 GB Archivelogs erfolgreich erzeugt.

Ah ja.

Die Reparatur war ganz einfach. Sicherheitshalber die Datenbank als INTERNAL User via "svrmgl" heruntergefahren (ist Oracle 8). Die Archivefiles von der Festplatte entfernt (auf ein Band gepackt) und gleich danach die Datenbank wieder hochgefahren, dieses Mal unter abschalten des ARCHIVE LOG Modus für den Import. Allerdings habe ich auch sicherheitshalber den Import nochmal durchgeführt und ein vollständiges Backup angestoßen, damit ich die ARC Files wieder löschen konnte.