后臺進程用來執(zhí)行保證數(shù)據(jù)庫運行所需的實際維護任務。如:某個后臺進程維護緩沖區(qū)緩存,根據(jù)需要將塊寫出到數(shù)據(jù)文件.
另個進程負責在線重做日志文件寫滿時將它自己復制到一個歸檔目標.
可以通過查詢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
根據(jù)版本的不同,后臺進程數(shù)、名稱、類型等都可能不同.
中心后臺進程:
PMON(進程監(jiān)視器):負責在出現(xiàn)異常中止的連接后完成清理.PMON還會向oracle TNS監(jiān)聽器注冊通信,向它傳遞相關(guān)的參數(shù).
SMON(系統(tǒng)監(jiān)視器):完成所有的系統(tǒng)級任務.包括以下內(nèi)容:
清理臨時空間,合并空閑空間,針對原來不可用的文件恢復活動的事務,執(zhí)行RAC中失敗節(jié)點的實例恢復,清理OBJ$,收縮回滾段,‘離線’回滾段.
RECO(分布式數(shù)據(jù)庫恢復):基于2PC分布式協(xié)議,允許多個不同的修改實現(xiàn)原子提交,但是在真正提交前,出現(xiàn)網(wǎng)絡失敗等錯誤,事務成為一個可疑的分布式事務.此時
就需要RECO來負責聯(lián)系事務協(xié)調(diào)器來發(fā)現(xiàn)協(xié)調(diào)的結(jié)果。在這之前事務會保持未提交狀態(tài).當恢復網(wǎng)絡或者錯誤解決后,RECO可能會提交事務,也可能將事務回滾.
注:可疑分布式事務會導致寫阻塞讀的情況,即可疑分布式事務不能存在太長時間,DBA可自行手動提交或回滾.
CKPT(檢查點進程):建立檢查點主要是DBWn的任務.CKPT主要是更新數(shù)據(jù)文件的文件首部,從而輔助真正的建立檢查點的進程.
DBWn(數(shù)據(jù)庫塊寫入器):負責將臟塊(修改過的塊)寫入磁盤的后臺進程,它會寫出緩沖區(qū)緩存的臟塊,從而釋放相應的空間.可以配置多個DBWn(上面有2個DBW0和DBW1),
最好的情況是DBWn使用異步I/O將塊寫入磁盤.采用異步I/O,DBWn會收集要寫入的塊,交給操作系統(tǒng),然后立即返回,并收集下一批要寫的塊,操作系統(tǒng)完成寫文件操作之后,它會異步地通知DBWn.
LGWR(日志寫入器):它負責將SGA中重做日志緩沖區(qū)的內(nèi)容刷新輸出到磁盤.一般在下面幾個情況時候,LGWR就會執(zhí)行刷新操作:
1.每隔3秒會自動刷新一次
2.任何事務發(fā)出一個提交時
3.重做日志緩沖區(qū)1/3滿,或者包含1MB的緩沖數(shù)據(jù)的時候.
ARCn(歸檔進程):當LGWR將在線重做日志寫滿時,歸檔進程就將其復制到另一個位置.ARCn一般將在線重做日志至少復制到兩個位置.一般用于硬盤等介質(zhì)損壞時數(shù)據(jù)庫的恢復.
DIAG(診斷性進程):它會負責監(jiān)視實例的整體狀況,捕獲處理實例失敗時所需的信息并記錄.
FBDA(閃回數(shù)據(jù)歸檔進程):此進程為oracle 11g r1版本新增進程.主要用于閃回數(shù)據(jù),它主要維護隨時間對表中每行所做的改變,而實現(xiàn)歷史數(shù)據(jù)查詢.它將讀取事務生成的UNDO,并回滾事務做出的改變,然后將回滾的這些行記錄保存在閃回數(shù)據(jù)歸檔中.
DBRM(數(shù)據(jù)庫資源管理器進程):為數(shù)據(jù)庫實例配置資源計劃.
GEN0(通用任務執(zhí)行進程):主要是分擔另外某個進程的阻塞處理。
可選后臺進程:
ASMB(自動存儲管理后臺):該進程出現(xiàn)在ASM的數(shù)據(jù)庫實例中.它負責與管理存儲的ASM實例通信,向ASM實例提供更新的統(tǒng)計信息,并向ASM實例提供一個"心跳".
RBAL(重新平衡進程):該進程也在使用了ASM的數(shù)據(jù)庫實例中運行,向ASM磁盤組增加或去除磁盤時,它負責處理平衡請求,也就是重新分布負載請求.
RAC環(huán)境后臺進程:
LMON(鎖監(jiān)視器):監(jiān)視集群中的所有實例,檢測實例是否有失敗.在實例離開或重新加入集群時重新配置鎖和其他資源。
LMD(鎖管理器守護進程):它為全局緩存服務(保持塊緩沖區(qū)在實例間一致)處理鎖管理器服務請求.
LMSn(鎖管理器服務器進程):主要維持SGA塊緩沖區(qū)緩存在各個RAC實例間相互保持一致.
LOCK(鎖進程):與LMD相似,但它處理所有全局資源的請求.
工具后臺進程
CJQO和Jnnn(作業(yè)隊列進程):oracle通過一種稱為快照的數(shù)據(jù)庫對象來提供復制特性,作業(yè)隊列就是刷新快照時使用的內(nèi)部機制.
QMNC和Qnnn(高級隊列進程):QMNC會監(jiān)視高級隊列.并告訴從隊列中刪除等待消息的"出隊進程":已經(jīng)有一個消息變?yōu)榭捎?它們還要負責隊列傳播.
EMNC(事件監(jiān)視器進程):它是AQ體系結(jié)構(gòu)中的一部分,用于通知對某些消息感興趣的隊列.
DMnn和DWnn(數(shù)據(jù)泵主進程/工作進程):數(shù)據(jù)泵是oracle 10g r1中新增的特性,主要用來替代EXP/IMP。
其他后臺進程
PSPO(進程生成器進程):它主要負責生成各個后臺進程.
VKTM(虛擬時間管理器進程):為oracle實例實現(xiàn)一個一致的、細粒度的時鐘.
SMCO(空間管理協(xié)調(diào)器進程):協(xié)調(diào)數(shù)據(jù)庫的主動空間管理。
更多信息請查看IT技術(shù)專欄