Der für die Redo-Log-Verwaltung
erforderliche Hauptspeicherbereich wird Log-Warteschlange genannt. Die Größe
einer Log-Warteschlange (in Log-Seiten) wird
über den speziellen
Datenbankparameter LOG_IO_QUEUE bestimmt.
Eine Transaktion
verwendet eine Log-Warteschlange, um Hauptspeicherbereich für einen Redo-Log-Eintrag
zu bekommen. Die Transaktion schreibt den Redo-Log-Eintrag in die Log-Seiten
der Log-Warteschlangen.
Das Schreiben der Log-Seiten in den Log-Bereich
übernimmt der Log-Writer.
1.
Die User-Task der
Transaktion reserviert Hauptspeicherplatz für einen Redo-Log-Eintrag in der
Log-Warteschlange.
2. Die Transaktion schreibt in den reservierten Bereich der Log-Warteschlange den Redo-Log-Eintrag.
Der entsprechenden Log-Seite wird der Zeitpunkt des Schreibens des Redo-Log-Eintrags in die Log-Warteschlange zugeordnet (Log-Queue-Sequenznummer).
3.
Die Transaktion gibt den reservierten Bereich
der Log-Warteschlange für die Bearbeitung durch den Log-Writer frei und teilt
mit, ob sie auf das Schreiben der entsprechenden Log-Seite aus der
Log-Warteschlange in den Log-Bereich warten möchte. Dieses Verhalten ist für
COMMIT-
und
ROLLBACK-Vorgänge
immer erforderlich.
Falls eine Transaktion auf das Schreiben des Redo-Log-Eintrags wartet, weckt der Log-Writer diese Transaktion nach dem Schreiben der entsprechenden Seite aus der Log-Warteschlange in den Log-Bereich auf und teilt der Transaktion die Log-Sequenznummer mit, die beim Schreiben der Log-Seite in den Log-Bereich vergeben wurde.