Oracle 體繫結構之後台進程

來源:互聯網
上載者:User

後台進程(Background process)---V$BGPROCESS ,後台進程是Oracle的程式,用來管理資料庫的讀寫,恢複和監視等工作。Server Process主要是通過他和user process進行聯絡和溝通,並由他和user process進行資料的交換。在Unix機器上,Oracle後台進程相對於作業系統進程,也就是說,一個Oracle後台進程將啟動一個作業系統進程;在Windows機器上, Oracle後台進程相對於作業系統線程,開啟工作管理員,我們只能看到一個ORACLE.EXE的進程,但是通過另外的工具,就可以看到包含在這裡進程中的線程。

在Unix上可以通過如下方法查看後台進程:

ps–ef|grep ora_

Oracle系統有5 個基本進程:

  • DBWR(資料檔案寫入進程)
  • LGWR(記錄檔寫入進程)
  • SMON(系統監護進程)
  • PMON(使用者進程監護進程)
  • CKPT(檢查點進程,同步資料檔案, 記錄檔,控制檔案)

 

a、DBWR

將修改過的資料緩衝區的資料寫入對應資料檔案

維護系統內的空緩衝區

這裡指出幾個容易錯誤的概念:

當一個更新提交後,DBWR把資料寫到磁碟並返回給使用者提交完成.

DBWR會觸發CKPT 後台進程

DBWR不會觸發LGWR 進程

上面的概念都是錯誤的.

DBWR是一個很底層的背景工作處理序,他批量的把緩衝區的資料寫入磁碟。和任何前台用

戶的進程幾乎沒有什麼關係,也不受他們的控制。

DBWR工作的觸發條件:

a)DBWR逾時3秒;

b)系統中沒有多的空緩衝區用來存放資料;

c)CKPT進程觸發DBWR 等。

Oracle允許允許同時運行多個DBWn進程,以分擔繁瑣的寫負載,這就是DBWn中n的來曆,資料庫中最多可以使用20個DBWn進程。

 

b、LGWR

將重做日誌緩衝區的資料寫入重做記錄檔,LGWR是一個必須和前台使用者進程通訊的進程。當資料被修改的時候,系統會產生一個重做日誌並記錄在重做日誌緩衝區內。這個重做日誌可以類似的認為是以下的一個結構:

SCN=000000001000

資料區塊ID

對象ID=0801

資料行=02

修改後的資料=0011

提交的時候,LGWR必須將被修改的資料的重做日誌緩衝區內資料寫入日誌資料檔案,然後再通知前台進程提交成功,並由前台進程通知使用者。從這點可以看出LGWR承擔了維護系統資料完整性的任務。

LGWR工作觸發條件:

a)使用者提交;

b)有1/3 重做日誌緩衝區未被寫入磁碟;

c)有大於1M 重做日誌緩衝區未被寫入磁碟;

d)3秒逾時;

e)DBWR需要寫入的資料的SCN號大於LGWR 記錄的SCN號,DBWR 觸發LGWR寫入。

LGWR將重做條目寫入聯機記錄檔的情況分兩種:

後台寫(background write)和同步寫(sync write)。

觸發後台寫的條件有四個:

1)每隔三秒鐘,LGWR啟動一次;

2)在DBWR啟動時,如果發現髒資料區塊所對應的重做條目還沒有寫入聯機記錄檔,則DBWR觸發LGWR進程並等待LRWR寫完以後才會繼續;

3)重做條目的數量達到整個日誌緩衝區的1/3時,觸發LGWR;

4)重做條目的數量達到1MB時,觸發LGWR。

而觸發同步寫的條件就一個:

當使用者提交(commit)時,觸發LGWR。

日誌緩衝區是一個迴圈緩衝區。當LGWR將日誌緩衝區的日誌項寫入記錄檔後,伺服器處理序可將新的日誌項寫入到該日誌緩衝區。LGWR 通常寫得很快,可確保日誌緩衝區總有空間可寫入新的日誌項。

注意:有時候當需要更多的日誌緩衝區時,LWGR在一個事務提交前就將日誌項寫出,而這些日誌項僅當在以後事務提交後才永久化。

ORACLE使用快速提交機制,當使用者發出COMMIT語句時,一個COMMIT記錄立即放入日誌緩衝區,但相應的資料緩衝區改變是被延遲,直到在更有效時才將它們寫入資料檔案。當一事務提交時,被賦給一個系統修改號(SCN),它同交易記錄項一起記錄在日誌中。由於SCN記錄在日誌中,以致在並行伺服器選項配置情況下,恢複操作可以同步。

 

c、SMON

工作主要包含:

清除臨時空間;

在系統啟動時,完成系統執行個體恢複;

聚結空閑空間;

從停用檔案中恢複事務的活動;

OPS中失敗節點的執行個體恢複;

清除OBJ$表;

縮減復原段;

使復原段離線;

 

d、PMON

主要用於清除失效的使用者進程,釋放使用者進程所用的資源。如PMON將復原未提交的

工作,釋放鎖,釋放分配給失敗進程的SGA資源。

 

e、CKPT

同步資料檔案,記錄檔和控制檔案,由於DBWR/LGWR的工作原理,造成了資料文

件,記錄檔,控制檔案的不一至,這就需要CKPT進程來同步。

CKPT會更新資料檔案/控制檔案的頭資訊。

CKPT工作觸發條件:

在日誌切換的時候;

a)資料庫用immediate ,transaction , normal 選項shutdown 資料庫的時候;

b)根據初始話檔案LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設定的數值來確定;

c)使用者觸發。

以下進程的啟動需要手工配置

a、ARCH

當資料庫以歸檔方式啟動並執行時候,Oracle會啟動ARCH進程,當重做記錄檔被寫滿時,記錄檔進行切換,舊的重做記錄檔就被ARCH進程複製到一個/多個特定的目錄/遠程機器。這些被複製的重做記錄檔被叫做歸檔記錄檔。

b、RECO

負責解決分布事物中的故障。Oracle可以串連遠端多個資料庫,當由於網路問題,有些事物處於懸而未決的狀態。RECO進程試圖建立與遠程伺服器的通訊,當故障消除後,RECO進程自動解決所有懸而未決的會話。

c、LCKn

是在具有並行伺服器選件環境下使用,可多至10個進程(LCK0,LCK1……,LCK9),

用於執行個體間的封鎖。

d、服務進程Server Process

服務進程的分類

專用服務進程(Dedicated Server Process) :一個服務進程對應一個使用者進程

共用服務進程(MultiTreaded Server Process) :一個服務進程對應多個使用者進程,輪流為使用者進程服務。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.