Expert one on one oracle之後臺程式

tolywang發表於2007-03-30
Tom的《expert one on one oracle》英文版
oracle 後臺程式:
1、PMON (The Process Monitor) 程式監控器
主要負責連線非正常中斷後的清除工作,PMON負責釋放相應的資源。
PMON將回滾沒有提交的工作,釋放鎖,釋放分配給這個失敗程式的Free SGA資源。
除了清理失敗的連線之外,PMON還負責監控所有其它的Oracle後臺程式,假如有
需要的話,將重起這些後臺程式,比如一個 shared server或者一個dispatcher
fail的話, PMON將跟進,重起另一個相應的程式。

2、SMON (The System Moniter) 系統監控器
主要負責其它程式不想處理的工作的程式,是資料庫的一種”垃圾回收站”,主要包括:
1、臨時空間的清除;
比如建立索引失敗時,SMON將負責清除在建立索引過程當中分配出來的Temporary extent。
2、崩潰恢復;
3、Coalescing free space;
這個是在字典管理的表空間才會有的,SMON將表空間中連續的空閒的extent,合併成一個大的
free extent。這隻能發生在字典管理的表空間,並且pctincrease 被設定成非零的時候。
4、Recovering transactions active against unavailable files;
5、OPS中失敗節點的例項恢復;
在OPS中,當一個節點Fail,其它節點將開啟失敗節點的重做日誌,對失敗節點執行恢復。
(注意 例項恢復和崩潰恢復的區別)
6、清除OBJ$;
7、Shrinks 回滾段;
如果設定了Optimal,那麼SMON將執行自動 Shrink 回滾段到Optimal 大小.
8、離線 回滾段;
舉個例子,比如在切換回滾表空間的時候,由於可能之前的回滾表空間中有活動的事務,所以
回滾表空間中的一些回滾段可能並不是真正的離線,而只是標誌為" Pending offline",要等到
活動事務提交或回滾之後,相應的回滾段才算真正的離線,而SMON則週期性的在後臺去真正的離線
回滾段,直到回滾段真正的離線為止。
3、CKPT (Checkpoint Process)
CKPT程式並不像它的名字暗示的那樣會進行一個checkpoint事件,它只是更新資料檔案頭。
Oracle 8.0之前,CKPT是一個可選程式,之後就總是開啟的了,更新資料檔案頭在CKPT出現之前
這是LGWR的任務,但是後來隨著檔案數量增大,這個LGWR的附加任務變得太大而成為負擔。
於是就出現了CKPT,由CKPT分擔著這部分任務。
4、DBWn (Database Block Writer)
DBWn是一個負責將dirty blocks寫到磁碟的後臺程式,通常將dirty blocks寫到磁碟是為了騰空
更多的空閒空間(為了其它資料的讀 而釋放緩衝區), 或者advance 一個檢查點事件(也就是在
發生故障例項恢復時, 將聯機重做日誌中Oracle開始讀取的位置 前移以節省例項恢復的時間)
Log Switch 會觸發一個Checkpoint,Oracle 需要advance這個Checkpoint以至於在例項恢復時
不需要這個剛被填滿的online redo log,假如在重用這個日誌之前,不能完成這個advance Checkpoint
的操作,則我們在alert將發現"Checkpoint not Compelete"資訊,並且必須等待這個事件的完成。
5、LGWR (Log Writer)
LGWR負責將Redo log buffer (位於SGA中)中的內容寫入到聯機日誌檔案。
下面幾種情況將會觸發LGWR寫log buffer:
1、每三秒;
2、當使用者commit時;
3、當重做日誌緩衝區 1/3滿 或者包含1M 的緩衝資料時。
由於上面的原因,使用一個大於3M的重做日誌緩衝區是不實際的---Oralce永遠無法完全使用它。
與DBWn必須執行分散的I/O 不同,重做日誌是以順序寫入的方式寫入的,這樣執行大量的批寫入更
加有效率。
6、ARCn (Archive Process)
ARCn是負責copy 已經寫滿的online redo log到另外一個地方。注意這裡的redo log的copy不是檔案
級別的Copy,而是copy redo log裡面的entries。這些歸檔日誌可以用來處理Media
Recovery。比如你的system01.dbf檔案丟失,那麼你可以利用你一週前的備份,Restore 該資料檔案。
然後請求資料庫應用從備份開始後的所有的歸檔日誌和線上日誌檔案,這樣的話,該資料檔案就可以
”追”上資料庫中的其它的資料檔案,然後我們可以繼續processing,而不會丟失資料。
中文翻譯 "catch up" that file with the reset of the datafiles in our database.中的"cacth
up"翻譯為"彌補",我覺得翻譯成"追"更合適,因為這樣才能更好的理解日誌其實是一種資料流。
實際上:
備份是baseline,而日誌是一種資料流,指向到系統crash的點,兩者共同使用才能回到當前點,
其實中文就這個很模糊,所謂恢復是兩件事情,restore和recover 。
7、RECO (Distributed Database Recovery)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84554/,如需轉載,請註明出處,否則將追究法律責任。

相關文章