oracle程序

追求完美9196發表於2024-06-08

每個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。