The area of the main memory required for redo log management is called the log queue. The size of a log queue (in log pages) is determined by the special database parameter LOG_IO_QUEUE.
A transaction uses a log queue to obtain a main memory area for a redo log entry. The transaction writes the redo log entry to the log pages of the log queues.
Writing of the log pages to the log area is carried out by the log writer.
1. The user task of the transaction reserves main memory space for a redo log entry in the log queue.
2. The transaction writes the redo log entry to the reserved area of the log queue.
The time at which the redo log entry is written to the log queue is assigned to the relevant log page (log queue sequence number).
3. The transaction releases the reserved area of the log queue for processing by the log writer, and provides information on whether it wants to wait for the log page from the log queue to be written to the log area. This behavior is always required for COMMIT and ROLLBACK operations.
If a transaction does wait for the redo log entry to be written, the log writer notifies the transaction once the relevant page has been written from the log queue to the log area, and informs the transaction of the log sequence number that was assigned when the log page was written to the log area.