一、server process - 服務器進程
- 服務器進程:用來處理相應用戶的請求
- 作用:
- 解析和運行應用程序提交的SQL語句,包括創建執行計劃
- 執行PL/SQL代碼
- 從數據文件讀取數據塊到數據庫緩沖區中
- 返回結果
- 兩種連接
- 如果是dedicated server,那么,每個session都會產生一個server process;
- 如果是shared server,那么oracle server固定產生一定量的server process,所有的會話共享
二、background process - 后臺進程

1、中心后臺進程
1.1 PMON - 進程監視器
Process Monitor(進程監視器):
- 進程監視器負責監視其他進程,如果其他的進程出現異常關閉的情況,進程監視器負責進程恢復;
- 進程監視器負責清理客戶端進程所對應的server process的數據庫緩存和釋放資源;
- 進程監視器負責數據庫實例的動態注冊(數據庫把自己的信息告訴監聽器–就叫做注冊)
1.2 SMON - 系統監視器
system monitor(系統監視器):
- 清理臨時空間
- 合并空閑空間
- 針對原來不可用的文件恢復活動的事務
- 執行RAC中失敗節點的實例恢復
- 清理OBJ$
- 收縮回滾段
- “離線”回滾段
1.3 RECO - 分布式數據庫恢復
Recoverer Process(恢復進程):負責分布式數據庫的分布式事務的恢復。由于兩段提交(2PC)期間的崩潰或連接丟失等原因,有些事務可能會保持準備狀態,這個進程就是要恢復這些事務。
1.4 CKPT - 檢查點進程
Checkpoint Process (檢查點進程):檢查點進程會按照時間先后順序來更新控制文件和數據文件頭部的檢查點信息(scn),以輔助真正建立檢查點的進程(DBWn);還負責驅動DBWn進程去寫臟塊
1.5 DBWn - 數據塊寫入器
Database Writer Process (數據庫寫進程):負責將數據庫緩沖的內容(臟buffer)寫入磁盤
數據庫寫進程觸發的條件:
- 當server process掃描了一定數量的buffer之后,仍然沒有找到可用的buffer,觸發DBWn寫;(40%)
- 根據檢查點信息,定期的觸發DBWn進程;
- 當發生drop 或者 truncate的時候,觸發寫進程;
- 表空間置為read only;
- 表空間置為offline;
- 當做begin backup的時候,也會觸發DBWn進程。
1.6 LGWR - 日志寫入器
Log Writer Process(日志寫進程):將SGA中重做日志緩沖區的內容刷新輸出到磁盤。
日志寫進程觸發的條件:
- 每隔三秒鐘觸發一次;
- 日志緩沖區達到1/3滿,或者容量達到1M,觸發LGWR;
- 用戶提交;
- 日志切換;
- DBWn進程觸發的時候,首先觸發LGWR。
LGWR and Commits:只有將redo log buffer里的日志信息寫回redo log,commit命令才能成功
1.7 ARCn - 歸檔進程
Archiver Processes(歸檔進程):當在線重做日志發生切換后,如果數據庫是處于歸檔模式,那么ARCn進程負責將在線重做日志拷貝到歸檔位置;還負責向standby database傳遞日志。
在線重做日志和歸檔重做日志區別:前者用于再出現電源故障(實例終止)時“修正”數據文件;而歸檔日志是在出現磁盤故障時用于”修正“數據文件
1.8 FBDA - 閃回數據歸檔進程
Flashback Data Archiver Process(閃回數據歸檔進程):在事務提交后立即工作,讀取該事務生成的UND0,并回滾事務做出的改變,然后將回滾的這些行(原來的值)記錄在閃回數據歸檔中。
閃回數據歸檔功能:能夠查詢很長時間之前的數據
1.9 DBRM - 數據庫資源管理器進程
Database Resource Manager Process(數據庫資源管理器進程):實現為一個數據庫實例配置的資源計劃
1.10 GEN0 - 通用任務執行進程
General Task Execution Process(通用任務執行進程)主要目標:分擔另外某個進程的阻塞處理(這種處理會導致一個進程停止),并在后臺完成所阻塞的操作
1.11 其他中心進程
2、工具后臺進程
2.1 CJQ0 和 Jnnn - 作業隊列
Job Queue Processes(作業隊列):oracle用這個進程來運行用戶的作業,經常是處于批處理模式
2.2 QMNC 和 Qnnn - 高級隊列
2.3 EMNC - 時間監視器進程
event monitor process(時間監視器進程):通知某些消息感興趣的隊列訂購者
2.4 MMAN - 內存管理器
memory manager(內存管理器):協調共享內存中各組件(默認緩沖區池、共享池、Java池和大池)的大小設置和大小調整。
2.5 MMON、MMNL和Mnnn - 可管理性監視器
可管理性監視器:用于填充自動工作負載存儲庫(automatic workload reposity,AWR)。MMNL進程會根據調度從SGA將統計結果刷新輸出至數據庫表;MMON進程用于”自動檢測“數據庫性能問題,并實現新增的自調整特性
2.6 CTWR - 修改跟蹤進程
修改跟蹤進程:負責維護新的修改跟蹤文件
2.7 RVWR - 恢復寫入器
恢復寫入器:負責維護閃回回復區中塊的”前“映像,要與 flashback database 一起使用
2.8 DWnn/DMnn - 數據泵主進程/工作進程
數據泵主進程從客戶進程手機所有輸入,然后協調工作進程完成元數據和數據的具體處理
2.9 其他工具后臺進程
三、slave process - 從屬進程
1、I/O從屬進程
用途:
- DBWn 和 LGWR 可以利用 I/O 從屬進程來模擬異步 I/O
- RMAN 寫磁帶時也可能利用 I/O從屬進程
2、Pnnn - 并行查詢執行服務器
Parallel Query Slaves(并行查詢執行服務器):對于SELECT、CREATE TABLE、CREATEINDEX、UPDATE等SQL 語句,創建一個執行計劃,其中包含可以同時完成的多個(子)執行計劃。將每個執行計劃的輸出合并在一起構成一個更大的結果。其目標是僅用少量的時間來完成操作,這只是串行完成同一操作所需時間的一小部分。




