10g_DBWn_concept

ORACLE的主要进程DBWn,LGWR的工作原理

DBWn defers writing to the data files until one of the following events occurs:
1. Incremental or normal checkpoint
2.The number of dirty buffers reaches a threshold value
3. A process scans a specified number of blocks when scanning for free buffers and cannot find any
4. Timeout occurs
5.A ping request in Real Application Clusters (RAC) environment
6.Placing a normal or temporary tablespace offline
7.Placing a tablespace in read-only mode
8.Dropping or truncating a table
9. ALTER TABLESPACE tablespace name BEGIN BACKUP

LGWR performs sequential writes from the Redo Log Buffer to the online redo log file under the following situations:
1. When a transaction commits
2.When the Redo Log Buffer is one-third full
3.When there is more than 1 MB of changes recorded in the Redo Log Buffer
4.Before DBWn writes modified blocks in the Database Buffer Cache to the data files
5. Every three seconds

Redo Byte Address (RBA)

Recent entries in the redo thread of an Oracle instance are addressed using a 3-part redo byte address, or RBA. An RBA is comprised of
  • the log file sequence number (4 bytes)
  • the log file block number (4 bytes)
  • the byte offset into the block at which the redo record starts (2 bytes)
RBAs are not necessarily unique within their thread, because the log file sequence number may be reset to 1 in all threads if a database is opened with the RESETLOGS option.

RBAs are used in the following important ways.

With respect to a dirty block in the buffer cache, the low RBA is the address of the redo for the first change that was applied to the block since it was last clean, and the high RBA is the address of the redo for the most recent change to have been applied to the block.

Dirty buffers are maintained on the buffer cache checkpoint queues in low RBA order. The checkpoint RBA is the point up to which DBWn has written buffers from the checkpoint queues if incremental checkpointing is enabled -- otherwise it is the RBA of last full thread checkpoint. The checkpoint RBA is copied into the checkpoint progress record of the controlfile by the checkpoint heartbeat once every 3 seconds. Instance recovery, when needed, begins from the checkpoint RBA recorded in the controlfile. The target RBA is the point up to which DBWn should seek to advance the checkpoint RBA to satisfy instance recovery objectives.

The on-disk RBA is the point up to which LGWR has flushed the redo thread to the online log files. DBWn may not write a block for which the high RBA is beyond the on-disk RBA. Otherwise transaction recovery (rollback) would not be possible, because the redo needed to undo a change is always in the same redo record as the redo for the change itself.

The term sync RBA is sometimes used to refer to the point up to which LGWR is required to sync the thread. However, this is not a full RBA -- only a redo block number is used at this point.

The low and high RBAs for dirty buffers can be seen in X$BH. (There is also a recovery RBA which is used to record the progress of partial block recovery by PMON.) The incremental checkpoint RBA, the target RBA and the on-disk RBA can all be seen in X$TARGETRBA. The incremental checkpoint RBA and the on-disk RBA can also be seen in X$KCCCP. The full thread checkpoint RBA can be seen in X$KCCRT.

你可能感兴趣的:(职场,休闲,lgwr,DBWn,RBA)