Oracle 背景處理程式(Background Process)
主要是Oracle記憶體結構與實體結構之間的溝通橋樑。而當Instance被開啟時,會有5個基本的背景處理程序會永遠在上面,當有需要時要用時就拿來用,就像UNIX上的daemand、NT上的”service”,背景處理程序不會因為使用者等入時而增加,或是因為使用者登出而減少。背景處理程序可分為以下兩大類:
- 標準配備(Mandatory Background Processes):當Oracle開啟時所必須要有的背景處理程序,缺一不可,也就是說,當這些標準配備的背景處理程序突然死了,資料庫也就等同損毀。這些標準配備的背景處理程序依序如下
- DBWN(Database Writer):主要的工作是將DB Buffer Cache裡面被改過的data回寫到data file裡面。Oracle Database為了執行效率,並不會直接存取硬碟裡面,而會先到SGA中的Data Buffer Cache裡面尋找,如果沒有才會去存取硬碟。而DBWR的工作就是用來負責Oracle memory和Disk上的資料的一致性,他負責不定時將記憶體已修改的資料(Dirty Buffer)寫到資料庫裡面。一個Oracle Instance最多可以有10個DBWR(DBW0-DBW9),DBWR將buffer取出並寫到硬碟有兩個主要的機制Write-ahead Protocol機制與LRU(Least Recently Used)機制。
- LGWR(Log Writer):主要的工作是將重作日誌緩衝區裡面的記錄寫到Redo Log File裡。Log Writer Process將來自SGA的log buffer中的redo entry 寫到disk上。當transaction被commit時,LGWR會遵循Write-ahead Protocol,(先期寫入協定),負責將redo log buffer儲存的資料異動記錄寫入線上重作日誌檔案內
- SMON(System Monitor):SMON有兩個主要的功能執行1. Instance Recovery當資料庫不正常中斷後在度開啟時,SMON會自動執行Instance Recovery,也就是會將線上重作日誌裡面的資料回寫到資料檔裡面。2. 收集空間:除了執行Instance Recovery之外,SMON還有一個例行性的工作,就是將表格空間內相鄰空的空間進行合併的動作,但表格空間必須是資料庫字典管理模式。
- PMON(Process Monitor):PMON會監視資料庫的使用者處理程序(Process)。若使用者的處理程序不當中斷時,PMON會負責清理任何遺留下來的資源(例如記憶體),並釋放失效的處理程序所保留的LOCK,然後從Process list中移除以終止之Process。
- CKPT(Checkpoint):主要負責更新資料庫的最新狀態,動作的對象是data file和control file,實際上,它的動作很簡單,只有要求DB Buffer Cache裡面的東西回寫到data file裡面,而真正做動作的是DBWn,當做完之後CKPT就會在Control file裡做記錄。每當一段固定的時間經過,DBWR就會把已修改過的Data buffer Cache裡面的Dirty Buffer回寫到資料庫,這個時間點叫做Checkpoint,CKPT的功能就是在告知DBWR進行這個動作,當Checkpoint完成後,CKPT會更新Control file和Data file的檔頭。萬一需要instance recovery時,可以縮短啟動的時間。
- 選用配備(Optional Background Processes):當有需要開啟特殊功能時才會啟動的處理程序,也就是說,當這些選用配備的背景處理程序突然死了,資料庫並不會因此而損毀。這些選用配備的背景處理程序包含ARCn等。
軟體程式碼區域(Software Code Area)
主要是存放Oracle軟體可執行程式的地方,同時軟體程式碼區域也是屬於Oracle Instance的一部份。
PGA(Program Global Area;PGA)
PGA(Program Global Area;PGA)
PGA是一塊私有的記憶體區塊,包含了有server process正在執行的工作資訊。每一個”server process”都有一個自己的PGA,而PGA裡面又劃分為Private SQL Area、Cursors and SQL Area與Session Memory。
UGA(User Global Area;UGA)
UGA(User Global Area;UGA)
UGA主要是儲存使用者特定的連線狀態,UGA可能在SGA中分配,也可能在PGA中分配,這取決於Oracle的網路連線方式,看是使用多執行緒伺服器模式(Multi-Thread Server)還是專屬伺服器模式(Dedicated Server)。
其他處理程式(Other Process)
其他處理程式(Other Process)
主要是使用者與Oracle記憶體結構之間的溝通橋樑。Oracle Instance只負責兩件事:共享記憶體與背景處理程序,除此之外的,都稱為其他處理程序(Other Process),如User Process和Server Process。這些其他處理程序並不屬於Oracle Instance,但卻是使用者或應用程式要連進Oracle最重要的兩個Process;User Process丟command給Server Process,而Server Process則是丟給Instance。
沒有留言 :
張貼留言