LGWR DBWR SMON 等程式說明

cccgw發表於2008-02-23

來自

先記一下.

[@more@]PMON程式:該程式在使用者程式出現故障時執行程式恢復,負責清理記憶體儲區和釋
放該程式所使用的資源。例:它要重置活動事務表的狀態,釋放封鎖,將該故障
的程式的ID從活動程式表中移去。PMON還週期地檢查排程程式(DISPATCHER)和
伺服器程式的狀態,如果已死,則重新啟動(不包括有意刪除的程式)。
PMON有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

SMON程式:該程式例項啟動時執行例項恢復,還負責清理不再使用的臨時段。在
具有並行伺服器選項的環境下,SMON對有故障CPU或例項進行例項恢復。SMON程式
有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

DBWR程式:該程式執行將緩衝區寫入資料檔案,是負責緩衝儲存區管理的一個OR
ACLE後臺程式。當緩衝區中的一緩衝區被修改,它被標誌為“弄髒”,DBWR的主
要任務是將“弄髒”的緩衝區寫入磁碟,使緩衝區保持“乾淨”。由於緩衝儲存
區的緩衝區填入資料庫或被使用者程式弄髒,未用的緩衝區的數目減少。當未用的
緩衝區下降到很少,以致使用者程式要從磁碟讀入塊到記憶體儲存區時無法找到未用
的緩衝區時,DBWR將管理緩衝儲存區,使使用者程式總可得到未用的緩衝區。
ORACLE採用LRU(LEAST RECENTLY USED)演算法(最近最少使用演算法)保持記憶體中
的資料塊是最近使用的,使I/O最小。在下列情況預示DBWR 要將弄髒的緩衝區寫
入磁碟:
1、當一個伺服器程式將一緩衝區移入“弄髒”表,該弄髒表達到臨界長度
時,該服務程式將通知DBWR進行寫。該臨界長度是為引數DB-BLOCK-WRITE-BATCH
的值的一半。
2、 當一個伺服器程式在LRU表中查詢DB-BLOCK-MAX-SCAN-CNT緩衝區時,沒
有查到未用的緩衝區,它停止查詢並通知DBWR進行寫。
3、出現超時(每次3秒),DBWR 將通知本身。
4、 當出現檢查點時,LGWR將通知DBWR
在前兩種情況下,DBWR將弄髒表中的塊寫入磁碟,每次可寫的塊數由初始化引數
DB-BLOCK-WRITE-BATCH所指定。如果弄髒表中沒有該引數指定塊數的緩衝區,DB
WR從LUR表中查詢另外一個弄髒緩衝區。
如果DBWR在三秒內未活動,則出現超時。在這種情況下DBWR對LRU表查詢指定數目
的緩衝區,將所找到任何弄髒緩衝區寫入磁碟。每當出現超時,DBWR查詢一個新
的緩衝區組。每次由DBWR查詢的緩衝區的數目是為寢化引數DB-BLOCK-WRITE-BAT
CH的值的二倍。如果資料庫空運轉,DBWR最終將全部緩衝區儲存區寫入磁碟。
在出現檢查點時,LGWR指定一修改緩衝區表必須寫入到磁碟。DBWR將指定的緩衝
區寫入磁碟。
在有些平臺上,一個例項可有多個DBWR。在這樣的例項中,一些塊可寫入一磁碟
,另一些塊可寫入其它磁碟。引數DB-WRITERS控制DBWR程式個數。


LGWR程式:該程式將日誌緩衝區寫入磁碟上的一個日誌檔案,它是負責管理日誌
緩衝區的一個ORACLE後臺程式。LGWR程式將自上次寫入磁碟以來的全部日誌項輸
出,LGWR輸出:
1、 當使用者程式提交一事務時寫入一個提交記錄。
2、每三秒將日誌緩衝區輸出。
3、 當日志緩衝區的1/3已滿時將日誌緩衝區輸出。
4、當DBWR將修改緩衝區寫入磁碟時則將日誌緩衝區輸出。
LGWR程式同步地寫入到活動的鏡象線上日誌檔案組。如果組中一個檔案被刪除或
不可用,LGWR 可繼續地寫入該組的其它檔案。
日誌緩衝區是一個迴圈緩衝區。當LGWR將日誌緩衝區的日誌項寫入日誌檔案後,
伺服器程式可將新的日誌項寫入到該日誌緩衝區。LGWR 通常寫得很快,可確保日
志緩衝區總有空間可寫入新的日誌項。
注意:有時候當需要更多的日誌緩衝區時,LWGR在一個事務提交前就將日誌項寫
出,而這些日誌項僅當在以後事務提交後才永久化。
ORACLE使用快速提交機制,當使用者發出COMMIT語句時,一個COMMIT記錄立即放入
日誌緩衝區,但相應的資料緩衝區改變是被延遲,直到在更有效時才將它們寫入
資料檔案。當一事務提交時,被賦給一個系統修改號(SCN),它同事務日誌項一
起記錄在日誌中。由於SCN記錄在日誌中,以致在並行伺服器選項配置情況下,恢
復操作可以同步。

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

相關文章