亚洲最大的av在线,国产精品视频一区二区三区麻豆,欧美久久久久久久久久,www.日本欧美,亚洲456区乱码,在线免费日本

當前位置: Oracle DBA培訓網-優技培訓 >> oca培訓 >

oca教程:Oracle后臺進程詳解

oca教程:Oracle后臺進程詳解

后臺進程負責保證數據庫的穩定工作,每當數據庫啟動時,這些后臺進程會自動啟動,并且持續整 個實例的生命周期,每個進程負責一個獨特的任務,是一些最重要的后臺進程。

進 程 縮 寫 描 述

Database Writer DBWn 負責把臟數據寫回磁盤

Log Writer LGWR 負責把日志數據寫到聯機日志文件

Checkpoint CKPT 負責檢查點操作

Process Monitor PMON 負責維護用戶進程

System Monitor SMON 負責實例恢復

Archiver ARCn 負責歸檔操作,生成歸檔日志

Manageability Monitor MMON和AW R有關

Manageability Monitor Light MMNL和AW R有關

Memory Manager MMAN和自動SGA管理有關

Job Queue Coordination Process CJQO 定時任務進程

Recover Writer RVWR和Flashback Database 功能有關

Change Tracking Writer CTWR跟蹤數據塊變化,支持快速增量備份

1.DBWn

Oracle 對于數據的修改都是在內存中進行的,Oracle 不會直接修改磁盤上的數據,因此 Oracle 在修改數據之前必須把數據從磁盤讀入到SGA 中。這個模式就遇到兩個問題:首先,如何確保SGA 中有足夠的空間來裝載這些數據?其次,修改后的數據終將寫回到磁盤上,這又是如何完成的?我 們就帶著這兩個問題來了解DBWn 進程的功能。

DBWn (Database Writer)進程的顯式作用是負責把 SGA 中被修改的數據同步到磁盤文件中。 每當SGA 緩存中的空閑空間變得過小時,DBWR進程就通過把臟數據寫到磁盤來釋放空間。DBWn 進程使用的是LRU(Least Recently Used )算法工作的,也就是根據數據從最后一次被使用以來的 時間決定釋放那些數據,越久沒有用到的數據越先被清除。因此 DBWn 的隱式的作用是保證 Buffer Cache 中空閑數據塊的數量,避免 Server Process 從磁盤把數據讀入內存時沒有空間可用。

DBWn 的寫時機包括:

檢查點,即數據庫的檢查點動作會觸發 DBWn 進程工作;

如果一個 Sever Process 在尋找可空閑數據塊時, 超過了一定閾值仍然沒能找到空閑塊,就 會觸發 DBWn 進程工作;

每 3 秒自動喚醒一次。

對于一個大型數據庫或者修改非常頻繁的系統而言,僅靠一個DBWn 進程為所有數據文件的寫 操作提供服務,可能會力不從心。因此,Oracle 允許同時運行多個 DBWn 進程,以分擔繁重的寫負 載。這就是 DBWn 中n 的來歷。數據庫中最多可以使用 20 個DBWn 進程(n 從0~9 ,a~i)。數據庫 初始化參數DB_WRITER_PROCESSES 就是用來定義DBWn 進程數量。如果沒有定義這個參數, Oracle 缺省時按照 CPU 的數量來決定需要的進程個數。每8 個CPU 分配一個進程。

Oracle 推薦在增加 DBWn 進程數量之前,要先考慮使用異步 IO,有可能異步 IO就能夠解決問 題,不需要增加進程數量。

2.LGWR (Log Writer)

LGWR 進程的作用是吧Log Buffer中的日志內容寫到聯機日志文件中,從而釋放 Log 用戶Buffer 空間。數據庫的所有修改操作(增、刪、改)都會生成日志,這些日志最初先保存在 Redo Log Buffer 中,然后在某個時刻由LGWR 進程寫入到磁盤的聯機日志文件中。

觸發LGWR 寫操作的原因有幾種:

用戶提交,即用戶發出 Commit 指令時會觸發 LGWR 寫操作;

每三秒鐘定時喚醒;

如果使用的 Log Buffer 超過了配置的 1/3 時,即 1/3 滿會觸發 LGWR 的寫操作;

Log Buffer 中的日志數量超過 1MB 時,即 1MB 限制也會觸發 LGWR 的寫操作;

由 DBWR 進程觸發

(1)提前寫。

Oracle 使用的是提前寫(Write-Ahead)機制,即和一個數據塊相關聯的的 Redo記錄必須先于 數據塊本身被記錄到磁盤中。這就意味著,當DBWn 進程試圖把一個臟數據塊寫到磁盤上之前, DBWn 進程會先確定和這個數據塊相關聯的所有Redo記錄都已經被寫到聯機日志文件中了,如果 沒有滿足這個前提條件,那么 DBWn 進程就會通知 LGWR 進程,等待 LGWR 進程把相關日志都寫 完后,DBWn 進程再把數據塊內容寫到磁盤文件中。

(2)快速提交。

每當用戶發出Commit命令時,Oracle 只是會把Redo Log Buffer 中的記錄寫到日志文件中,同 時會在日志中寫入一條代表事務已經提交的記錄(Commit Record)。但是這個事務所修改到的數據 塊并不會被寫到數據文件中。或者說Oracle 對Commit操作成功的定義是這樣的:只要這個事務的 Redo Record被寫到日志文件中,這個事務就算是 Commit成功了,至于事務修改的數據是否記錄到 數據文件沒有任何關系。這也就是Oracle 的快速提交(Fast Commit)機制。

提前寫(Write Ahead)和快速提交(Fast Commit)是 Oracle 兩個很重要的運行機制,這兩個機 制保證了事務提交不必等待數據寫到磁盤,而之所以采用這種機制,也是平衡性能和可用性的結果。

對于一個繁忙的OLTP 系統來說,同時會有大量的事務發生,因此同時會有大量的Commit請 求,這時LGWR 進程就可以把許多的 Commit請求批量的寫入日志文件,而不是針對每個Commit 請求立即處理,這種機制也叫做Group Commit。

3.CKPT(Checkpoint)

所謂檢查點,代表著數據庫的一致性狀態。在檢查點時刻,數據文件的內容和SGA 中的內容 完全一致,也就是說在 SGA 中進行的所有數據修改都被寫回到數據文件上,而數據庫的一致性狀態 也正是從這個角度來描述的。

注意:檢查點所代表的數據一致和事務隔離級別所說的讀一致性不是一個概念,后者是從數據完整性角度 來說的。而檢查點的數據一致僅指內存和磁盤的數據一樣,是從恢復的角度來說的,二者一定不能 混淆。雖然在檢查點時刻,系統中會有很多未提交事務,修改后的臟數據最終可能被提交,永久生 效,也有可能回滾,還原成修改前的樣子,但這不是檢查點所關心的。檢查點只關心恢復操作是否 可以從這一時刻開始。

在發生檢查點機制時,會同時有 DBWn 、LGWR 、CKPT 三組進程的活動。首先,DBWR進程 要把臟數據寫入的磁盤數據文件中,當然這個操作也會觸發 LGWR 的工作。而 CKPT 進程只負責更 新控制文件中的檢查點記錄,它的任務量并不像 DBWn 進程和 LGWR 進程那么繁重.

4.PMON(Process Monitor)

這個后臺進程用來監控用戶進程的。用戶進程可能由各種原因導致異常終止,比如網絡故障、 用戶機器斷電等。這時用戶進程對應著的服務進程可能還占用著系統資源,如果這些資源不及時釋 放,就會影響正常用戶的工作。

PMON 進程就負責在發現用戶進程異常中止后的清理工作,以確保釋放占用的資源。比如,一 個用戶進程可以在異常中止之前正在處理事務,使用了若干鎖,突然用戶計算機斷電了,這些鎖沒 有被正常釋放,而且這些鎖永遠不會有機會被正常釋放,其他用戶可能就要永久等待這些鎖。這時 就需要PMON 進程強行進行清理工作,釋放這些被占用的資源,以保證其他用戶不會因為這些異常 中止進程的干擾。PMON 進程定期被喚醒,其他進程也會在需要時主動喚醒PMON 進程。

5.SMON(System Monitor)

如果遭遇數據庫異常關閉,SGA 中還沒有來得及寫到磁盤的信息就丟失了,數據庫再次啟動時,

就先要進行恢復工作,這種恢復叫做實例恢復(Instance Recovery )。SMON 進程負責實例恢復,實

例恢復分成3 個階段。

前滾(Roll Forward):這一階段是讀取聯機日志,找到最后一次檢查點之后的日志內容, 并重做這些日志,把數據庫恢復到上次實例關閉時的狀態,這時系統包含著提交和未提交的 事務。

打開數據庫:為了減少用戶等待時間,Oracle 選擇盡可能早地打開數據庫,打開數據庫以 后,再繼續進行恢復工作。現在用戶就可以使用數據庫。

回滾(Roll Back) :SMON 進程回滾未提交的事務,Server Process 也可以進行部分回滾工作。

除了實例恢復,SMON 進程還負責部分空間管理工作,包括:

如果使用字典管理表空間(DMT) ,SMON 進程需要合并空閑 Extents,以避免磁盤碎片, 這個功能叫做 Coalesce,這個任務每 3 秒執行一次;

SMON 進程負責清理臨時段,以釋放空間;

SMON 進程也是定期被喚醒或者被其他進程主動喚醒。

6.ARCn(Archiver)

歸檔(Archiver)進程負責歸檔模式的數據庫的歸檔操作。我們知道每個數據庫都必須要創建 至少兩組聯機日志,這些日志是循環使用的,也就是一組日志寫滿后,LGWR 就切換到另一組日志 繼續寫入,周而復始。因此稍早產生日志終將被新的日志覆蓋掉,這是非歸檔模式。而歸檔模式比 非歸檔模式多出的處理就是,在發生日志切換時,ARCn 進程被喚醒,把之前寫滿的日志做一個文 件拷貝,這個拷貝被保存到一個特殊的目錄下——歸檔目錄,這個拷貝就叫做歸檔日志。每個聯機 日志能夠被覆蓋的前提條件也相應地多了一個,除了要完成檢查點,還必須完成歸檔操作。

歸檔模式就是確保數據庫所有操作日志都被保留下來,這樣能夠最大程度的保證數據庫的可恢 復性。

ARCn 進程就是完成這個拷貝動作,和DBWn 進程一樣,ARCn 進程可以有多個,最多是 10 個(n 取值范圍為 0~9 )。數據庫的初始化參數 LOG_ARCHIVE_MAX_PROCESSES 就是定義數據庫 啟動時運行的ARCn 的個數。

技術沙龍MORE+

標簽錯誤:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要參加技術沙龍