oracle background process smon
TRANSCRIPT
-
7/29/2019 Oracle background process Smon
1/9
SMON
SMONn is one of the important processes in Database Architecture. The main work of SMONn isInstance Recovery
The Instance Recovery can be done by using three phases
Roll Forward Open the database to users Roll Backward
Let consider an example that a user A wants to transfer an amount of 1000 to another account names
B. During this process a Instance Crash occurs (Power failure or RAM failure) at this situation the
problem is solved by using Roll Forward/Roll Backward technique which is nothing but Instance
Recovery.
Before going into the explanation of SMONn lets see the concept of REDOLOG Files. Actually the
REDOLOG files are loaded with redo entriesby LGWR. It is in the form of single block as shown below
REDOLOG File
Redo Entry 1
Redo Entry 2
Redo Entry 3
..
.
LGWR
Log Buffer
Cache
Redo Entry 1
Redo Entry 2
-
7/29/2019 Oracle background process Smon
2/9
Here the Problem occurs if we load more no ofredo entries into REDOLOG Files even TERA/PETA bytes
of memory is also not sufficient. To Over Come this Problem Oracle came up with a better solution i.e,
Using 2 REDOLOG members instead of 1
REDOLOG
Member 1
REDOLOG
Member 2
LOG SWITCH
LGWR
Log Buffer
Cache
Redo Entry 1
Redo Entry 2
-
7/29/2019 Oracle background process Smon
3/9
If first REDOLOG member is full then the redo entries are loaded in second REDOLOG member, while
changing from 1st
member to 2nd
member a LOG SWITCH will occur, It will load the redo entries from
REDOLOG member 1 to DATA FILES (After log switch only the redo entries are loaded into data files)
based on some actions, they are
Check Point Event-Its Action is committed data is loaded into the data files by DBWRn CKPT Process Its Action is to update the SCN to data file header and control files DBWRn will write the dirty blocks in write list to data files ARCHn Process Its work sis to load the redo entries of REDOLOG member 1 to ARCHn
If suppose a REDOLOG member 1 is full then a log switch is occurred then redo log member 2 is used for
loading the redo entries, if again that REDOLOG member 2 is also full then it has to jump back to
REDOLOG member 1(now the contents in the REDOLOG member 1 is Overloaded it is nothing but the
data is going to lost) for this purpose ARCHn process is used It will Load the redo entries which are going
to Overloaded
-
7/29/2019 Oracle background process Smon
4/9
SMON Instance Recovery
Example 1 (ROLL FORWARD)
From the above example the 1,2,3,4 represents transactions .the transactions 1, 2, half of 3 are done in
REDOLOG member 1, where as REDOLOG member2 consists of 3&4 transactions
LOG SWITCH
1
2
3
4
3
3
Header Data File Control File
3 31 2
-
7/29/2019 Oracle background process Smon
5/9
When REDOLOG member 1 is completed it has to jump to REDOLOG member2 before that LOG SWITCH
will occur. As we discussed above when LOG SWITCH is occurred the 4 actions are performed those are
nothing but the contents of header, data file and control file.
The SCN is loaded into Header, Control File and only Committed Transactions are Loaded into Data File
Here in this example 1,2 are committed where as 3 is also committed but only half of the transaction is
written in Data File by DBWRn
Then in the REDOLOG member 2 the remaining process is going on and transaction 3 is committed,4th
transaction is going on. Assume here LGWRn writing the transaction 4.Assume at that state an Instance
Occurs
Whenever an instance Occurs SMONn Process will Woke up and start comparing SCN between Header
of DATA FILE and REDOLOG file it also checks the check point
It will identify that 1, 2 are written into data files but not 3(which is half written) so SMON will initiate
work to DBWRn. The DBWRn will check for dirty blocks in Write List because of instance crash nothing is
there in Write list. Then DBWR will take help from Server Process where it will copy the dirty block (redo
entries) from the REDOLOG Files
This is the process called as Roll Forward, here redo entries from redo log file are used to recover and
committee the transaction
-
7/29/2019 Oracle background process Smon
6/9
LOG SWITCH
LGWRn
Log Buffer
Cache
Redo Entry 1
3
Header Data File Control File
3 31 2
DBWRn
1
2
3
4
3
Redo Entry 2
While WritingCrash Occurs
Write List
Step 1
Step 2
Step 3
Step 4
SMONn
Step
Step 6
Step 7
Server
Process
Step 8
Already Written
REDOLOG FILE
Redo entries
Step 9
Step 10 Step 11
3 1 2 3
Step 12
-
7/29/2019 Oracle background process Smon
7/9
Example 2 (ROLL BACK)
----------
--------
LOG SWITCH
1
2
33
3
Header Data FileControl File
3 31 2
-
7/29/2019 Oracle background process Smon
8/9
Here in the above example transaction 3 is not committed. Due to log switch 1,2 and half of 3 is written
into data files by DBWRn
Assume Instance Crash occurs while the LGWRn is writing the transaction3
When Instance Crash occurs SMONn will woke up and performs Instance Recovery
SMONn will start comparing SCN 1,2 when it comes to 3 it identifies that half of 3 is written so SMONn
has to recover 3
Then SMON will assign task to DBWRn, as DBWRn will try for data in Write List because of Instance
Crash it will ask help for Server Process
The Server Process will generated old values with the help of Undo Block
-
7/29/2019 Oracle background process Smon
9/9
LOG SWITCH
LGWRn
Log Buffer
Cache
Redo Entry 1
3
Header Data File Control File
3 31 2
DBWRn
--- ---
--- ---
--- ---
1
2
33
Redo Entry 2
Write ListSMONn
Server
Process
UNDO Table Space3 1 2 3
While Writing
Crash Occurs
Step 1
Step 2
Step 3
Step 4
Step
Step 6
Step 7
Step 8
Step 9
Step 10 Step 11
Step 12
Blocks of
Old Valueswith the
Help of
UNDO
table Space