每個oracle程序都有自己的任務,oracle會給程序分配記憶體(PGA)讓程序更好的完成任務。oracle程序可以分為三類:伺服器程序,後臺程序,從屬程序。
1 伺服器程序
伺服器程序是執行客戶端會話指令的程序。負責將客戶端的指令傳送到oracle服務端執行,然後將服務端的結果返回給客戶端。可分為專用伺服器程序和共享伺服器程序。
1.1 專用伺服器程序
當資料庫的連線方式設為專用伺服器連線,使用者在登入oracle資料庫時,資料庫會建立專用服務程序服務使用者的請求。在整個使用者的登入會話週期內,專門為這個使用者服務。每個使用者都有自己的伺服器程序。
1.2 共享伺服器程序
當資料庫的連線方式設為共享伺服器連線,使用者在登入oracle資料庫時,資料庫會使用共享服務程序服務使用者的請求。使用者的請求會放在一個請求佇列中,當資料庫有空閒的共享伺服器程序時,這個共享伺服器程序就會處理使用者的請求,處理完成後會將處理結果放在響應佇列中,當處理結果出列後就返回給使用者。
2 後臺程序
後臺程序可以透過v$bgprocess檢視檢視,名字都是以ora_開頭,以例項名結束,中間是程序自身名稱。
2.1 PMON:程序監視器
負責在連線出現異常中止後進行清理工作。例如,一個專用伺服器“失敗”或者出於某種原因被結束掉,就要由PMON程序負責善後(恢復或撤銷工作),並釋放資源。PMON會回滾未提交的工作,釋放鎖,並釋放之前為失敗程序分配的SGA資源。
2.2 LREG:監聽註冊程序
LREG程序負責將資料庫例項和服務註冊到監聽器中
2.3 SMON:系統監視器
SMON程序用來做所有“系統級”的任務。
- 清理臨時表空間
- 維護V$OBJ字典
- 管理undo
- 幫助例項恢復
2.5 CKPT:檢查點程序
檢查點觸發後,當DBWn把對應的髒塊寫入磁碟後,CKPT更新資料檔案以及控制檔案的檢查點。
2.6 DBWn:資料庫塊寫入器
負責將髒塊(修改過的塊)寫入磁碟的後臺程序。
2.7 LGWR:日誌寫入器
LGWR程序負責將SGA中重做日誌緩衝區的內容重新整理輸出到磁碟。如果滿足以下條件之一時,就會做這個工作:
- 每過3秒;
- 一個提交或回滾發起時;
- LGWR被告知進行日誌檔案切換時;
- 重做日誌緩衝區1/3滿,或者已經包含1 MB的緩衝資料。
2.8 ARCn:歸檔程序
當一個線上重做日誌檔案填滿時,ARCn就將其複製到另一個位置。
3 從屬程序
Oracle中有兩類從屬程序:I/O從屬程序和並行査詢從屬程序。
3.1 I/O從屬程序
I/O從屬程序用於在不支援非同步I/O的系統或裝置上模擬非同步I/O,DBWn和LGWR可以利用I/O從屬程序來模擬非同步I/O
3.2 Pnnn:並行查詢執行伺服器
使用並行查詢功能時,會使用到Pnnn。