一、SMON:系統監督程序
1.主要是已經送出的資料但是還沒有進行寫入資料檔案給斷電了,重新開機的時候,smon 就會進行恢複
a.執行前滾,将已經寫入重做日志檔案但是還沒有寫入到資料檔案中的資料(使用scn 号碼來識别送出記錄的)
b.打開資料庫
c.復原沒有送出的事務
2.還可以進行磁盤空間維護工作
a.回收或者合并資料檔案中相連的空閑區
b.釋放臨時段
二、PMON:程序監督程序
1.當某個程序崩潰,PMON 将負責進行如下的清理工作
a.復原使用者目前事務
b.釋放使用者所加的所有表一級和行一級的鎖
c.釋放使用者所有的其他資源等
三、CKPT:校驗(檢查)點和檢驗點程序
1.提高系統效率和資料庫一緻性,引入了校驗點的事件,CKPT 是在DBWR 将高速緩沖中的資料寫入到資料檔案上的時
候産生的,理論上說它是不需要的
可以通過redo log 和 scn 保證了完全恢複,引入它是為了提高效率,因為所有的校驗點為止的變化都已經寫入到數
據檔案中了,在恢複的時候
校驗點之前的重做日志就不在需要了,這樣執行個體恢複就加快了,CKPT 會将校驗點寫入到所有相關的資料檔案的檔案頭中,還要将校驗點号碼、重做日志序列号、歸檔日志名稱和最低、最高scn 号都會寫入控制檔案中,由于ckpt 會産生大量的IO操作,是以不能頻繁的産生校驗點,最好在20 分鐘以上
四、ARCn:歸檔日志程序
1.當一組重做日志檔案寫滿後,會寫另外一組,當最後一組寫滿後會在寫第一組,叫做日志切換
2.如果沒有開歸檔,那麼覆寫後就無法進行恢複了
3.如果開了歸檔,那麼就會使用arch 程序進行寫入歸檔日志檔案中,oracle 會確定在一組重做日志的歸檔操作完成
之前不會重新使用該組日志
五、DBWn:資料庫寫程序
1.11g 之前隻可以有0~9,10 個程序,11g 之後可以有36 個,0~9 和a~z,通過 db_writer_processes 來設定個數
的,如果啟動的時候沒有說明個數
那麼是由cpu 的個數來決定的該參數的
2.當以下情況發生時,DBWR 會将高速緩沖區中的資料寫入到資料檔案中
a.當髒緩沖區的數量超過了所設定的限額
b.所設定的時間間隔已到
c.有程序需要高速緩沖區,但是沒有空閑的高速緩沖區空間時候
d.校驗(檢查點)發生時
e.某個表被删除或者截斷(truncate,drop)
f.某個表空間被設定為隻讀
g.表空間進行聯機備份時
h.表空間被設定為脫機時
六、LGWR:重做日志寫程序
1.将重做日志緩沖區的記錄順序寫入到重做日志檔案中,這裡注意它是順序寫入的,是以IO 相對要小
2. commit 語句怎樣工作,這裡使用了快速送出技術
a.伺服器程序把送出的記錄連同産生的scn 号碼一起寫入重做日志緩沖區中
b.LGWR 将重做日志緩沖區中的記錄寫入在重做日志檔案中,這樣就可以保證恢複了
c.oracle 通知使用者(程序)送出已經完成
e.伺服器程序将修改資料庫高速緩沖區中相關資料的狀态并釋放資源和打開鎖(這個時候可能這些資料并沒有寫入
到資料檔案中,他們标記為髒資料,之後由DBWR 寫入資料檔案)
3.以下情況LGWR 會寫入重做日志檔案
a.事務送出
b.重做日志緩沖區中的記錄超過了緩沖區容量的1/3
c.DBWR 将資料庫高速緩沖區中的資料塊寫入到資料檔案之前
d.每3 秒
本文轉自xiaocao1314051CTO部落格,原文連結:http://blog.51cto.com/xiaocao13140/1972058 ,如需轉載請自行聯系原作者