Instance Architecture   «Prev  Next»

Lesson 14 The log-writing process
Objective Explain the functions of the head and tail of the log.

Placing redo log entries, Writing to redo log files

Oracle maintains two important pointers that you should be aware of.
  1. One points to the tail of the log and
  2. the other points to the head of the log.
As changes are made to a database, new redo log entries are always placed at the head of the log. The Log Writer process, on the other hand, always looks at the tail of the log. The Log Writer's job is to continually check the tail of the log to see if there are any new redo log records, and then to write those records to the redo log files as quickly as possible. The following series of images illustrates this process:

Check the Tail of the log

1) As changes are made to the database, the head is advanced, and new entries are added to the redo log.
1) As changes are made to the database, the head is advanced, and new entries are added to the redo log.

2) As changes are made, the head is advanced, and new entries are added to the redo log.
2) As changes are made to the database, the head is advanced, and new entries are added to the redo log.

3) As changes are made to the database, the head is advanced, and new entries are added to the redo log.
3) As changes are made to the database, the head is advanced, and new entries are added to the redo log.

4) As changes are made to the database, the head is advanced, and new entries are added to the redo log.
4) As changes are made to the database, the head is advanced, and new entries are added to the redo log.

5) At the same time, LGWR is always writing redo log records from the tail of the redo log.
5) At the same time, LGWR is always writing redo log records from the tail of the redo log.

6) Here redo log record #1 has been written, and the tail pointer has been advanced.
6) Here redo log record #1 has been written, and the tail pointer has been advanced.

7) Now redo log record #2 has been written, and the pointer advanced again.
7) Now, redo log record #2 has been written, and the pointer advanced again.

8) These processes can occur simultaneously.
8) These processes can occur simultaneously.

9) The process continues as long as the instance is running.
9) The process continues as long as the instance is running.

Viewing Linux Files using tail command

Many times your only interest is in seeing the end of a file. To view just the last handful of lines in a file, use the tail command.
$ tail required_packages.txt  

 elfutils-libelf-devel-0.97.1-5.i386.rpm
 glibc-headers-2.3.4-2.41.i386.rpm
 glibc-kernheaders-2.4-9.1.103.EL.i386.rpm will be required as a
 prerequisite
 glibc-devel-2.3.4-2.41.i386.rpm
 gcc-3.4.6-10.i386.rpm
 libstdc++-devel-3.4.6-10.i386.rpm
 gcc-c++-3.4.6-10.i386.rpm
 libaio-devel-0.3.105-2.i386.rpm
 sysstat-5.0.5-19.el4.i386.rpm
 unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm

By default, tail displays the last 10 lines of a file. This is a great way to look at recent entries in Oracle database alert logs. If more than 10 lines need to be seen, specify a number of lines as an option. For example, tail -15 required_packages.txt will show the last 15 lines of the file required_packages.txt. When a log file is being actively written to, like with an alert log, displaying new lines on the screen as they are written to the file may be preferred. To do that, add the -f option to the tail command like this: tail -f alert_TEST.log. This allows the monitoring of a log in near real time, though sometimes lines may appear too quickly to read.

Viewing Linux Files using head command

 
$ head required_packages.txt  

REHEL4, OEL4: 
 Refer to Note 880211.1 

binutils-2.15.92.0.2-25
 compat-libstdc++-33-3.2.3-47.3
 elfutils-libelf-0.97.1-5
 glibc-2.3.4-2.41
 glibc-common-2.3.4-2.41
 libaio-0.3.105-2
 libgcc-3.4.6-10 

The head command defaults to displaying the first 10 lines of the specified file. Like with tail, the default can be overridden and more lines or fewer lines can be displayed by adding a number as an option. For example, head -5 required_packages.txt will display only the first five lines of the file.

Specifying Redo Log Writing Process

Timely protection of application data requires use of the log writer process to propagate primary database modifications to one or more standby databases. This is achieved using the LGWR attribute of the LOG_ARCHIVE_DEST_n initialization parameters.
Attribute Example Default
{LGWR|ARCH} LOG_ARCHIVE_DEST_3='SERVICE=stby1 LGWR' ARCH

LGWR attribute

Choosing the LGWR attribute indicates that the log writer process (LGWR) will concurrently create the archived redo logs as the online redo log is populated. Depending on the configuration, this may require the log writer process to also transmit redo log files to remote archival destinations. Choosing the ARCH attribute indicates that the (ARCn) archiver process will create archived redo logs on the primary database and also transmit redo logs for archival at specified destinations. This is the default setting. The LGWR and ARCH attributes are mutually exclusive. Therefore, you cannot specify the two attributes for the same destination. The LGWR attribute can be specified for individual destinations and this allows you to specify that the log writer process writes to redo logs and archives for some destinations while the archiver process archives redo logs to other destinations.

Log Writing Process - Quiz

Click the Quiz link below to take a short a quiz covering the LGWR process.
Log Writing Process - Quiz

SEMrush Software