Eine aktive Task der Redo-Log-Verwaltung ist der Log-Writer.
Der Log-Writer ist eine Task im User-Kernel-Thread.
Er wird beim Start des Datenbanksystems anhand dauerhaft abgelegter interner
Konfigurationsinformationen initialisiert. Diese Konfigurationsinformationen
werden in regelmäßigen Abständen, insbesondere auch bei einem
Savepoint, in den
Log-Bereich
geschrieben.
· Dem Log-Writer wird eine Log-Warteschlange zugeordnet.
·
Der Log-Writer schreibt die Log-Seiten, die
voll sind oder die aufgrund eines COMMIT oder
ROLLBACK
geschrieben werden müssen, aus der Log-Warteschlange in den Log-Bereich. Die
Log-Seiten werden nummeriert (Log-Sequenznummer), um überprüfen zu können,
dass alle Log-Seiten geschrieben wurden und um bei einem Restart oder einer
Wiederherstellung die korrekte Abarbeitungsreihenfolge einhalten zu
können. Anschließend weckt der Log-Writer die Transaktionen, die auf das
Schreiben ihrer Redo-Log-Einträge
gewartet haben.
· Log-Seiten der Log-Warteschlange, die beim Schreiben noch nicht voll waren, verbleiben in der Log-Warteschlange, werden weiter gefüllt und werden bei einem erneuten Schreibvorgang wieder in den Log-Bereich geschrieben. Der Log-Writer ist so konfiguriert, dass er ein und dieselbe Log-Seite immer auf den gleichen physikalischen Platz im Log-Bereich schreibt.
·
Der Log-Writer überprüft regelmäßig den Zustand
des Log-Bereichs.
Wenn der Log-Bereich voll ist, sperrt der Log-Writer die Log-Warteschlange, so
dass alle Transaktionen, die Redo-Log-Einträge in die Log-Warteschlange
eintragen wollen, angehalten werden.
Wenn die automatische
Log-Sicherung aktiviert ist, sorgt der Log-Writer dafür, dass die
Redo-Log-Einträge aus dem Log-Bereich automatisch gesichert werden.
Wenn eine gewisse Menge an Log-Einträgen geschrieben wurde, werden die
Verwaltungsinformationen in den Log-Bereich kopiert und gegebenenfalls
Savepoints angefordert. Dadurch wird im Fall eines Restarts die Restartzeit
verkürzt.