Oracle 系統中的各種進程可以被分為兩大類:
1.執行應用程式或 Oracle 工具代碼的使用者進程(user process)。
2.執行 Oracle 資料庫伺服器代碼的 Oracle 進程(Oracle process)。其中包括服務進程(server process)和後台進程(background process)。
什麼是User Process呢?
當使用者運行一個應用程式同Oracle資料庫進行互動(例如 Pro*C 程式)或 Oracle 工具(例如企業管理器或 SQL*Plus)時,Oracle 將建立一個使用者進程(user process)來運行使用者的應用程式。
什麼是Server Process呢?
Server Process是用來處理串連到執行個體的使用者進程(User Process)提交的請求。當應用程式與Oracle伺服器運行在同一台機器上時,某些使用者進程(User Process)可以與Server Process合并為同一個進程,即便減小系統開銷。從邏輯層面來講,使用者進程必須要通過一個Server Process來同Oracle進行通訊的.(只不過有些時候在同一台機器的時候,某些User Process和Server Process會合并罷了)
為使用者應用程式建立的Server Process(或User Process和Server Process合并後的進程)可以完成以下工作:
(1)解析和運行應用程式提交的SQL語句.
(2)如果資料沒有在SGA中找到,則將所需的資料區塊從磁碟上資料檔案讀入到SGA的資料緩衝區(Shared Database Buffers).
(3)以應用程式能夠處理的形式返回SQL語句的執行結果.
什麼是Backgroud Process呢?
為了實現為多使用者提供服務且保證系統效能,在一個多進程的Oracle系統中,存在多個被稱為後台進程(Background)的Oracle進程.
一個Oracle執行個體中可以包含多種後台進程,這些進程不一定全部一直處於運行狀態。系統中啟動並執行後台進程數量眾多,使用者可以通過V$BGPROCESS視圖查詢關於後台進程的資訊。
Oracle執行個體中可能啟動並執行後台進程有:
(1)資料寫入進程Database Writer Process(DBWn)
(2)日誌寫入進程Log Writer Process(LGWR)
(3)檢查點進程Checkpoint Process(CKPT)
(4)系統監控進程System Monitor Process(SMON)
(5)進程監控進程Process Monitor Process(PMON)
(6)回複進程Recoverer Process(RECO)
(7)作業隊列進程Job Queue Process
(8)歸檔進程Archiver Process(ARCn)
(9)隊列監控進程Queue Monitor Process(QMNn)
(10)其他後台進程包括:MMON,MMNL,MMAN,RBAL,ORBn,OSMB等.
其中DBWn,PMON,CKPT,LGWR,SMON是一個執行個體啟動後,必須要啟動的進程.
顯示了主要的幾個後台進程如何與 Oracle 資料庫的各部分互動: