後台進程用來執行保證資料庫運行所需的實際維護任務。如:某個後台進程維護緩衝區快取,根據需要將塊寫出到資料檔案.
另個進程負責線上重做記錄檔寫滿時將它自己複製到一個歸檔目標.
可以通過查詢v$bgprocess視圖看伺服器當前後台進程
SQL> select paddr,name,description from v$bgprocess where paddr!='00';
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
00000001EB1F5920 PMON process cleanup
00000001EC226B30 VKTM Virtual Keeper of TiMe process
00000001EB1F69A0 GEN0 generic0
00000001F0269448 DIAG diagnosibility process
00000001EC227BB0 DBRM DataBase Resource Manager
00000001EB2137A0 VKRM Virtual sKeduler for Resource Manager
00000001F02683C8 PSP0 process spawner 0
00000001EB1F7A20 DIA0 diagnosibility process 0
00000001F026A4C8 MMAN Memory Manager
00000001EC228C30 DBW0 db writer process 0
00000001EB1F8AA0 DBW1 db writer process 1
00000001EB1FFE20 ARC0 Archival Process 0
00000001F02728C8 ARC1 Archival Process 1
00000001EC231030 ARC2 Archival Process 2
00000001EB200EA0 ARC3 Archival Process 3
00000001F026B548 LGWR Redo etc.
00000001EC229CB0 CKPT checkpoint
00000001EB1F9B20 SMON System Monitor Process
00000001EB1FCCA0 SMCO Space Manager Process
00000001F026C5C8 RECO distributed recovery
PADDR NAME DESCRIPTION
---------------- ----- ----------------------------------------------------------------
00000001EB201F20 CJQ0 Job Queue Coordinator
00000001F0273948 QMNC AQ Coordinator
00000001EC22AD30 MMON Manageability Monitor Process
00000001EB1FABA0 MMNL Manageability Monitor Process 2
根據版本的不同,後台進程數、名稱、類型等都可能不同.
中心後台進程:
PMON(進程監視器):負責在出現異常中止的串連後完成清理.PMON還會向oracle TNS監聽器註冊通訊,向它傳遞相關的參數.
SMON(系統監視器):完成所有的系統級任務.包括以下內容:
清理臨時空間,合并空閑空間,針對原來停用檔案恢複活動的事務,執行RAC中失敗節點的執行個體恢複,清理OBJ$,收縮復原段,‘離線’復原段.
RECO(分散式資料庫恢複):基於2PC分布式協議,允許多個不同的修改實現原子提交,但是在真正提交前,出現網路失敗等錯誤,事務成為一個可疑的分散式交易.此時
就需要RECO來負責聯絡事務協調器來發現協調的結果。在這之前事務會保持未提交狀態.當恢複網路或者錯誤解決後,RECO可能會提交事務,也可能將交易回復.
注:可疑分散式交易會導致寫阻塞讀的情況,即可疑分散式交易不能存在太長時間,DBA可自行手動提交或復原.
CKPT(檢查點進程):建立檢查點主要是DBWn的任務.CKPT主要是更新資料檔案的檔案首部,從而輔助真正的建立檢查點的進程.
DBWn(資料庫塊寫入器):負責將髒塊(修改過的塊)寫入磁碟的後台進程,它會寫出緩衝區快取的髒塊,從而釋放相應的空間.可以配置多個DBWn(上面有2個DBW0和DBW1),
最好的情況是DBWn使用非同步I/O將塊寫入磁碟.採用非同步I/O,DBWn會收集要寫入的塊,交給作業系統,然後立即返回,並收集下一批要寫的塊,作業系統完成寫檔案操作之後,它會非同步地通知DBWn.
LGWR(日誌寫入器):它負責將SGA中重做日誌緩衝區的內容重新整理輸出到磁碟.一般在下面幾個情況時候,LGWR就會執行重新整理操作:
1.每隔3秒會自動重新整理一次
2.任何事務發出一個提交時
3.重做日誌緩衝區1/3滿,或者包含1MB的緩衝資料的時候.
ARCn(歸檔進程):當LGWR將線上重做日誌寫滿時,歸檔進程就將其複製到另一個位置.ARCn一般將線上重做日誌至少複製到兩個位置.一般用於硬碟等介質損壞時資料庫的恢複.
DIAG(診斷性進程):它會負責監視執行個體的整體狀況,捕獲處理執行個體失敗時所需的資訊並記錄.
FBDA(閃回資料歸檔進程):此進程為oracle 11g r1版本新增進程.主要用於閃回資料,它主要維護隨時間對錶中每行所做的改變,而實現曆史資料查詢.它將讀取事務產生的UNDO,並復原事務做出的改變,然後將復原的這些行記錄儲存在閃回資料歸檔中.
DBRM(資料庫總管進程):為資料庫執行個體配置資源計劃.
GEN0(通用任務執行進程):主要是分擔另外某個進程的阻塞處理。
可選後台進程:
ASMB(自動儲存管理後台):該進程出現在ASM的資料庫執行個體中.它負責與管理儲存的ASM執行個體通訊,向ASM執行個體提供更新的統計資訊,並向ASM執行個體提供一個"心跳".
RBAL(重新平衡進程):該進程也在使用了ASM的資料庫執行個體中運行,向ASM磁碟組增加或去除磁碟時,它負責處理平衡請求,也就是重新分配負載請求.
RAC環境後台進程:
LMON(鎖監視器):監視叢集中的所有執行個體,檢測執行個體是否有失敗.在執行個體離開或重新加入叢集時重新設定鎖和其他資源。
LMD(鎖管理器守護進程):它為全域快取服務(保持塊緩衝區在執行個體間一致)處理鎖管理器服務要求.
LMSn(鎖管理器伺服器處理序):主要維持SGA塊緩衝區快取在各個RAC執行個體間相互保持一致.
LOCK(鎖進程):與LMD相似,但它處理所有全域資源的請求.
工具後台進程
CJQO和Jnnn(作業隊列進程):oracle通過一種稱為快照的資料庫物件來提供複製特性,作業隊列就是重新整理快照時使用的內部機制.
QMNC和Qnnn(進階隊列進程):QMNC會監視進階隊列.並告訴從隊列中刪除等待訊息的"出隊進程":已經有一個訊息變為可用.它們還要負責隊列傳播.
EMNC(事件監視器進程):它是AQ體繫結構中的一部分,用於通知對某些訊息感興趣的隊列.
DMnn和DWnn(資料泵主進程/背景工作處理序):資料泵是oracle 10g r1中新增的特性,主要用來替代EXP/IMP。
其他後台進程
PSPO(進程產生器進程):它主要負責產生各個後台進程.
VKTM(虛擬時間管理器進程):為oracle執行個體實現一個一致的、細粒度的時鐘.
SMCO(空間管理協調器進程):協調資料庫的主動空間管理。