Oracle11g 後臺進程說明

1、後臺進程有:
DBWR(Database Write) : 數據庫寫入程序
LGWR(Log Write) : 日誌寫入程序
CKPT(Checkpoint) : 檢查點
SMON (System Monitor): 系統監控
PMON(Process Monitor) : 進程監控
ARCH(Archive) : 歸檔
RECO : 恢復
LCKn : 封鎖;

2、RAC啓動後臺進程的順序:

PMON started with pid=2, OS id=18042

DIAG started with pid=3, OS id=18044

PSP0 started with pid=4, OS id=18051

LMON started with pid=5, OS id=18053

LMD0 started with pid=6, OS id=18055

LMS0 started with pid=7, OS id=18057

MMAN started with pid=8, OS id=18061

DBW0 started with pid=9, OS id=18063

LGWR started with pid=10, OS id=18065

CKPT started with pid=11, OS id=18067

SMON started with pid=12, OS id=18069

RECO started with pid=13, OS id=18071

CJQ0 started with pid=14, OS id=18073

MMON started with pid=15, OS id=18075

MMNL started with pid=16, OS id=18077

3、進程詳細說明

3.1. DBWR進程

       該進程執行將緩衝區寫入數據文件,是負責緩衝存儲區管理的一個ORACLE後臺進程。當緩衝區中的一緩衝區被修改,它被標誌爲“弄髒”,DBWR的主要任務是將“弄髒”的緩衝區寫入磁盤,使緩衝區保持“乾淨”。由於緩衝存儲區的緩衝區填入數據庫或被用戶進程弄髒,未用的緩衝區的數目減少。當未用的緩衝區下降到很少,以致用戶進程要從磁盤讀入塊到內存存儲區時無法找到未用的緩衝區時,DBWR將管理緩衝存儲區,使用戶進程總可得到未用的緩衝區。

       ORACLE採用LRU(LEAST RECENTLY USED)(最近最少使用算法)保持內存中的數據塊是最近使用的,使I/O最小。

 

觸發DBWR進程的條件有:
              1.  DBWR超時,大約3秒
              2.  系統中沒有多餘的空緩衝區來存放數據
              3.  CKPT 進程觸發DBWR(alter system checkpoint)
   

3.2. LGWR進程

       該進程將日誌緩衝區寫入磁盤上的一個日誌文件,它是負責管理日誌緩衝區的一個ORACLE後臺進程。

 

觸發LGWR進程的條件有:
  1. 用戶提交
  2. 有1/3重做日誌緩衝區未被寫入磁盤
  3. 有大於1M的重做日誌緩衝區未被寫入磁盤
  4. 3秒超時
  5. DBWR 需要寫入的數據的SCN大於LGWR記錄的SCN,DBWR 觸發LGWR寫入。

       日誌緩衝區是一個循環緩衝區。當LGWR將日誌緩衝區的日誌項寫入日誌文件後,服務器進程可將新的日誌項寫入到該日誌緩衝區。LGWR 通常寫得很快,可確保日誌緩衝區總有空間可寫入新的日誌項。

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

       ORACLE使用快速提交機制,當用戶發出COMMIT語句時,一個COMMIT記錄立即放入日誌緩衝區,但相應的數據緩衝區改變是被延遲,符合條件時纔將它們寫入數據文件。當一事務提交時,被賦給一個系統修改號(SCN),它同事務日誌項一起記錄在日誌中。由於SCN記錄在日誌中,以致在並行服務器選項配置情況下,恢復操作可以同步。


3.3. CKPT進程

       該進程在檢查點出現時,對全部數據文件的標題進行修改。負責在每當緩衝區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。

 
3.4. SMON進程

       SMON是Oracle數據庫至關重要的一個後臺進程, 該進程實例啓動時執行實例自動恢復,還負責清理不再使用的臨時段, 是一種用於庫的“垃圾收集者”。在具有並行服務器選項的環境下,SMON對有故障CPU或實例進行實例恢復。SMON進程有規律地被呼醒,檢查是否需要,或者其它進程發現需要時可以被調用。

 

它做的工作包括如下7件:

       1)清理臨時表空間:當建立一個索引,在創建期間分配給索引的擴展區被標誌爲TEMPORARY。如果Create Index會話因某些原因異常中斷,SMON負責清理他們。其他操作創建的臨時擴展區,SMON同樣會負責清理。
       2接合空閒空間:如果你使用數據字典管理表空間,SMON負責把那些在表空間中空閒的並且互相是鄰近的extent接合成一個較大的空閒擴展區。這發生僅在帶有默認的pctincrease設置爲非零的存儲子句的字典管理表空間。
       3把對於不可用文件的事務恢復成活動狀態:文件可能已經在不可用或沒裝載的磁盤上。當文件變可用了,SMON將恢復它。
       (4)執行一個RAC中故障節點的實例恢復:在一個oracle RAC配置中,當羣集中的一個庫實例失敗(例如,實例正執行的機器故障了),一些羣集中的其他節點將開啓故障的實例的重做日誌文件,爲故障實例執行所有數據的恢復。
       (5)清理OBJ$OBJ$是一個包含庫中幾乎每一個對象(表,索引,觸發器,視圖等等)的記錄的行級數據字典表。許多次,這兒存在的記錄代表已刪對象,或代表不在這兒的對象,在oracle的信賴機制中被使用。SMON是刪除這些不在被需要的行的進程。
       6)收縮回滾段:SMON將執行回滾段的自動收縮到它的optimal尺寸,如果它被設置。
       7脫機回滾段:對於DBA來,讓一個有active事務的回滾段,脫機或不可用,是可能的。Active事務正使用這脫機回滾段是可能的。在這情況下,回滾不是真正的脫機;它被標誌爲“懸掛offline”。在後臺進程中,SMON將週期性盡力讓它真正脫機,直到成功。

       SMON做許多其他事情,譬如存在DBA_TAB_MONITORING視圖中的監控統計數據的洗刷,SMON_SCN_TIME表中發現的時間戳定位信息的SCN的洗刷,等等。SMON在期間能消耗很多CPU,這應該被認爲是正常的。SMON週期性的甦醒(或被其他後臺進程叫醒)來執行這些管家的家庭雜事。

3.5. PMON進程

       用於恢復失敗的數據庫用戶的強制性進程,它先獲取失敗用戶的標識,釋放該用戶佔有的所有數據庫資源。PMON有規律地被呼醒,檢查是否需要,或者其它進程發現需要時可以被調用。

       PMON進程負責在反常中斷的連接之後的清理工作。例如,如果因某些原因專用服務“故障”或被kill掉,PMON就是負責處理(恢復或回滾工作)和釋放你的資源。       PMON將發出未提交工作的回滾,釋放鎖,和釋放分配給故障進程的SGA資源。除了在異常中斷之後的清理外,PMON監控其他oracle後臺進程,如果有必要(和有可能)重新啓動他們。如果共享服務或一個分配器故障(崩潰),PMON將插手並且重啓另一個(在清理故障進程之後)。

       PMON將觀察所有Oracle進程,只要合適或重啓他們或中止進程。例如,在數據庫日誌寫進程事件中,LGWR故障,實例故障。這是一個嚴重的錯誤,最安全的處理方法就是去立即終止實例,讓正常的恢復處理數據。

       PMON爲實例做的另一件事是去使用Oracle TNS監聽器登記。當一個實例開啓的時候,PMON進程投出衆所周知的端口地址1521,除非指向其他,來看是否監聽器正在開和運行着。   現在,如果監聽器在一些不同端口開啓會發生什麼?這種情況,機制是相同的,除了監聽器地址需要被LOCAL_LISTENER參數明確指定。如果監聽器運行在庫實例開啓的時候,PMON和監聽器通訊,傳到它相關參數,如果監聽器沒被開啓,PMON將週期性的試着和它聯繫來登記自己。

 

The background process PMON cleans up after failed processes by:
       1. Rolling back the user’s current transaction
       2. Releasing all currently held table or row locks
       3. Freeing other resources currently reserved by the user
       4. Restarts dead dispatchers

3.6. RECO進程

       負責在分佈式數據庫環境中自動恢復那些失敗的分佈式事務,保證分佈式事務的一致性,在分佈式事務中,要麼同時commit,要麼同時rollback; 

 

3.7. ARCH進程

       該進程將已填滿的在線日誌文件拷貝到指定的存儲設備。當數據庫運行在歸檔模式下,歸檔進程負責在日誌切換後將已經寫滿的重做日誌文件複製到歸檔目標.


3.8. LCKn進程

       是在具有並行服務器選件環境下使用,可多至10個進程(LCK0,LCK1……,LCK9),用於實例間的封鎖。  

 

3.9. MMAN 進程

       內存管理,如果設定了 SGA自動管理,MMAN用來協調SGA內各組件的大小設置和大小調整。

 

3.10. MMON 進程

       管理性監視器(Manageability Monitor),MMON主要用於AWR,ADDM。MMON會從SGA將收集統計結果並且寫到系統表中。

      

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章