實例進程結構

------
(1)系統監視器SMON
起初的任務是安裝和打開數據庫。SMON通過查找和驗證數據庫控制文件來安裝數據庫。此後它通過查找和驗證所有數據文件和聯機日誌文件打開數據庫。
一旦打開數據庫並使數據庫處於使用狀態後,SMON就負責執行各種內部管理任務,如合併數據文件中的可用空間。
(2)進程監視器PMON
監視所有服務器進程,並檢測會話中的任何問題,如果會話異常終止,PMON將銷燬服務器進程,將其PGA內存返回給操作系統的空閒內存池,並回滾任何尚在進行的未完成的事務。
如果會話異常終止,那麼活動的事物會發生什麼事情呢?PMON後臺進程將回滾活動事務。
(3)數據庫寫入器DBWn
會話通常並不將數據寫入磁盤,會話將數據寫入數據庫緩衝區緩存中的緩衝區。由數據庫寫入器負責隨後將緩存區寫入磁盤。
DBWn將髒緩衝區從數據庫緩衝區緩存寫入數據文件。但也並非緩衝區一旦變髒了,就相應地寫入此緩衝區。相反它會盡可能減少寫入緩存區的數量
DBWn用於選擇髒緩衝區來寫入磁盤(將清理緩衝區)的算法是:只選擇最近未使用的緩衝區。
DBWn根據極懶算法執行寫入:儘可能少,再儘可能少。在以下4種情況下,DBWn將執行寫操作:沒有任何可用緩衝區,髒緩衝區過多,遇到三秒鐘超時或遇到檢查點。
唯一絕對需要檢查點的時刻是:關閉了數據庫,關閉了實例。檢查點將所有髒緩衝區寫入磁盤,這就實現了緩衝區緩存與數據文件的同步,實例與數據庫的同步。
在通常的運行狀態下,數據文件始終是過時的:他們缺少多個更改 (提交的更改或未提交的更改)這不會帶來問題:因爲緩存區緩存中的數據塊副本是最新的,而會話使用的正是這些數據塊。
強制設置檢查點:alter system checkpoint;
局部檢查點:局部檢查點強制DBWn寫入僅包含一個或多個數據文件(而不是整個數據庫)的塊的所有髒緩衝區:在數據文件或有表空間脫機時;在將表空間置於備份模式時;或在將表空間設置爲只讀時。
與完全檢查點相比,這些檢查點力度較小,每次在相關事件發生時自動執行。
總之,DBWn按極懶算法執行寫入:儘可能少,再儘可能少。但出現檢查點的情況例外:將所有髒緩衝區儘快寫入磁盤。
(4)日誌寫入器LGWR
LGWR將日誌緩衝區的內容寫入到磁盤上的聯機日誌文件中,將日誌緩衝區寫入聯機重做日誌文件的過程通常稱爲“日誌緩衝區轉儲”
爲了保證不丟失任何工作,必須在最大程度減少延遲的情況下將這些變更向量寫入磁盤。爲此,LGWR將日誌緩衝區的內容幾乎實時地傳輸到聯機重做日誌文件中。當會話發出commit時。
LGWR會實時寫入:在LGWR將緩衝區寫入磁盤時,會話將掛起,只有此時纔將事務記錄爲已經提交。
LGWR是oracle體系結構中最大的瓶頸之一。dml的速度不可能超過LGWR將變更向量寫入磁盤的速度。在三種情況下,LGWR將轉儲日誌緩衝區:會話發出commit,日誌緩衝區佔用率達1/3,數據庫寫入髒緩衝區。
第一種情況是提交時寫入。爲了處理commit,服務器進程在日誌緩衝區插入提交記錄。在LGWR將日誌緩衝區轉儲到磁盤前,將掛起會話,只有此時寫操作完成時,才能將提交完成的消息返回給會話,服務器進程才能繼續工作。
這將確保事務永不丟失,已提交事務的每個變更向量都可以在磁盤上的重做日誌上得到,並可以在此後應用於數據文件備份。因此,如果數據庫被損壞,那麼可以通過備份進行還原,而且可以重做自備份以來執行的所有工作。
第二種情況是日誌緩衝區的佔用率達到1/3,此時,LGWR會將日誌緩衝區轉儲到磁盤。
第三種情況是DBWn需要將髒緩衝區從數據庫緩衝區寫入到數據文件中,在執行此操作前,它會通知LGWR將日誌緩衝區轉儲到聯機重做日誌文件中。這樣做可以確保:始終可以反轉未提交的事務。
DBWn完全可能將未提交的事物寫入數據文件,只要一定能夠獲得反轉事務所需的撤銷數據,就不成問題。在生成撤銷數據時,也會生成變更向量。在更新數據文件前,這些已經在重做日誌文件中,如有必要,可以重建回滾事務所需的撤銷數據。
(5)檢查點進程CKPT
崩潰後必須從重做日誌提取與髒緩衝區(出現故障時,尚未由DBWn寫入磁盤的緩衝區)對應的所有變更向量,並將其應用於數據塊,這就是恢復過程。頻繁的檢查點確保:可以將髒緩衝區快速寫入磁盤,從而最大程度
地減少崩潰發生後必須應用的重做量,最大程度地減少恢復數據庫所用的時間,CKPT負責發出普通檢查點的信號。
從8I開始,DBWn用增量檢查點替換了完全檢查點,增量檢查點機制要求DBWn以固定速率寫出髒緩衝區,因此,DBWn和LGWR之間始終有一個可以預見的差距。與早先的完全檢查點機制相比,增量檢查點有助於獲得更平穩的性能,恢復時間也更易於難測。
CKPT不再必鬚髮出完全檢查點,但是,它必須跟蹤重做流中增量檢查點的位置,如有必要,將指示DBWn寫出一些髒緩衝區,以便使檢查點位置前移。當前檢查點的位置,也稱RBA(重做字節地址),是發生實例故障時重做流中必須由此開始的恢復位置。
CKPT使用當前檢查點位置不斷更新控制文件。
(6)可管理性監視器MMON
是數據庫的很多自我監視和自我調整功能的支持進程。
此數據庫實例收集有關活動和性能的大量統計數據。這些統計數據收集到SGA中,通過發出SQL查詢,可以詢問他們的當前值。
爲了調整性能,也爲了分析趨勢和獲得歷史報告,有必要將這些統計數據保存到長期存儲的地方。
MMON從SGA定期捕獲統計數據,並將他們寫入到數據字典中,在數據字典中,可以無限期地存儲他們。

(7)NMNL是MMON的輔助進程。有時,MMON的預訂活動顯得不足。例如,MMON根據調度安排將SGA中收集的統計信息轉儲到數據庫中:默認方式下時每小時一次。如果在MMON預訂執行轉儲前,用於收集此信息的內存緩衝區變滿,那麼MMNL將擔當起轉儲數據的職責。
(8)內存管理器MMAN.它支持內存分配的自動管理。9i可以伸縮PGA,服務器根據需要爲會話分配內存,同時確保分配的PGA內存總量保持在一定限度之內。其中的SGA和組件(日誌緩衝區除外)的大小可以在一定範圍內重新設置。
10g版本實現了SGA大小重調的自動化,MMAN監視SGA內存結構的需要,並能根據需要重設其大小。11g版本管理能力更進一步,dba僅需爲內存使用情況確定一個總體目標,MMAN將觀察PGA和SGA內存的需要,並
根據需要將內存分配個會話和SGA結構,同時將內存分配總量保持在DBA設定的限制範圍內。
(9)ARCn
(10)RECO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章