關於pmon、smon、mman、mmon、mmnl後臺程式的解釋

東北胖子發表於2019-07-22

ProcessMonitor (PMON): 該程式在使用者程式出現故障時執行程式恢復,負責清理記憶體儲區和釋放該程式所使用的資源。例:它要重置活動事務表的狀態,釋放封鎖,將該故障的程式的ID從活動程式表中移去。PMON還週期地檢查排程程式(DISPATCHER)和伺服器程式的狀態,如果已死,則重新啟動(不包括有意刪除的程式)。

PMON有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

PMON程式還負責在反常中斷的連線之後的清理工作。例如,如果因某些原因專用服務“故障”或被kill掉,PMON就是負責處理(恢復或回滾工作)和釋放你的資源。PMON將發出未提交工作的回滾,釋放鎖,和釋放分配給故障程式的SGA資源。

除了在異常中斷之後的清理外,PMON監控其他oracle後臺程式,如果有必要(和有可能)重新啟動他們。如果共享服務或一個分配器故障(崩潰),PMON將插手並且重啟另一個(在清理故障程式之後)。PMON將觀察所有Oracle程式,只要合適或重啟他們或中止程式。例如,在資料庫日誌寫程式事件中,LGWR故障,例項故障。這是一個嚴重的錯誤,最安全的處理方法就是去立即終止例項,讓正常的恢復處理資料。(注意這是很少發生的事情,應該立即報告oracle支援)。

PMON為例項做的另一件事是去使用OracleTNS監聽器登記。當一個例項開啟的時候,PMON程式投出眾所周知的埠地址,除非指向其他,來看是否監聽器正在開和執行著。眾所周知/預設埠是使用1521。現在,如果監聽器在一些不同埠開啟會發生什麼?這種情況,機制是相同的,除了監聽器地址需要被LOCAL_LISTENER引數明確指定。如果監聽器執行在庫例項開啟的時候,PMON和監聽器通訊,傳到它相關引數,譬如伺服器名和例項的負載度量。如果監聽器沒被開啟,PMON將週期性的試著和它聯絡來登記自己。

If abackground process fails, the PMON process performs the cleanup operations byperforming the following tasks:

•Rolls back the user’s current transaction

•Releases all the locks that are held on tables or rows

•Frees other resources used by the users

•Restarts the dead dispatcher

 

System Monitor (SMON): 該程式在例項啟動時執行例項恢復,還負責清理不再使用的臨時段。在具有並行伺服器選項的環境下,SMON對有故障CPU或例項進行例項恢復。SMON程式有規律地被呼醒,檢查是否需要,或者其它程式發現需要時可以被呼叫。

SMON還負責做所有系統級的工作。相對於PMON對單個程式感興趣,SMON是一個系統級別的觀點,是一種用於庫的“垃圾收集者”。它做的工作包括如下7件:

1清理臨時表空間:伴隨著“真正”的臨時表空間的出現,清理臨時表空間的雜事已經減輕了,但它還沒完全消失。例如,當建立一個索引,在建立期間分配給索引的擴充套件區被標誌為TEMPORARY。如果CreateIndex會話因某些原因異常中斷,SMON負責清理他們。其他操作建立的臨時擴充套件區,SMON同樣會負責。

2接合空閒空間:如果你正使用資料字典管理表空間,SMON負責把那些在表空間中空閒的並且互相是鄰近的extent接合成一個較大的空閒擴充套件區。這發生僅在帶有預設的pctincrease設定為非零的儲存子句的字典管理表空間。

3把對於不可用檔案的事務恢復成活動狀態:它的角色類似在庫啟動期間。這時,因為檔案不能用於恢復,SMON恢復在例項/崩潰恢復期間被跳過的故障事務。例如,檔案可能已經在不可用或沒裝載的磁碟上。當檔案變可用了,SMON將恢復它。

4 執行一個RAC中故障節點的例項恢復:在一個oracleRAC配置中,當群集中的一個庫例項失敗(例如,例項正執行的機器故障了),一些群集中的其他節點將開啟故障的例項的重做日誌檔案,為故障例項執行所有資料的恢復。

5清理OBJ$:OBJ$是一個包含庫中幾乎每一個物件(表,索引,觸發器,檢視等等)的記錄的行級資料字典表。許多次,這兒存在的記錄代表已刪物件,或代表不在這兒的物件,在oracle的信賴機制中被使用。SMON是刪除這些不在被需要的行的程式。

6 收縮回滾段:SMON將執行回滾段的自動收縮到它的optimal尺寸,如果它被設定。

7“離線”回滾段:對於DBA來,讓一個有active事務的回滾段,離線或不可用,這事是可能的。Active事務正使用這離線回滾段是可能的。在這情況下,回滾不是真正的離線;它被標誌為“懸掛offline”。在後臺程式中,SMON將週期性盡力讓它真正離線,直到成功。它做許多其他事情,譬如存在DBA_TAB_MONITORING檢視中的監控統計資料的洗刷,在SMON_SCN_TIME表中發現的時間戳定位資訊的SCN的洗刷,等等。SMON在期間能消耗很多CPU,這應該被認為是正常的。SMON週期性的甦醒(或被其他後臺程式叫醒)來執行這些管家的家庭雜事。

 

 Ifan Oracle instance crashes, any changes that are made in the SGA are notwritten to the data files. When you restart the instance, the SMON backgroundprocess automatically performs instance recovery by performing the followingtasks:

•Rolling forward changes that are made in the online redo log files but not inthe data files. Since all the committed transactions are written to the onlineredo log files, these are successfully recovered as result of rolling forwardchanges from the online redo log files to the data files.

•Opening the database. After the database is opened, users can log on and accessany data that is not locked by un-recovered transaction.

•Rolling back all the uncommitted transactions.

 

 

memory manager(MMAN) :MMAN記憶體管理,如果設定了 SGA自動管理,MMAN用來協調SGA內各元件的大小設定和大小調整。

 

Memory Monitor(mmon) :在Oracle不同的文件中,對這兩個程式的解釋存在歧義。MMON應該是 Memory Monitor 的縮寫,但是在有的文件中被記錄為Manageability Monitor,這應當是10g早期版本中的稱呼,只不過後來發生了變更。

這個程式的主要作用如下:

The memory monitor (MMON) process was introduced in10g and is associated with the Automatic Workload Repository new features usedfor automatic problem detection and self-tuning. MMON writes out the requiredstatistics for AWR on a scheduled basis.

MMON主要用於AWR,ADDM,MMON會從SGA將統計結果寫到系統表中

 

 

The Memory Monitor Light (MMNL) :thisprocess is anew process in 10g which works with the Automatic Workload Repository newfeatures (AWR) to write out full statistics buffers to disk as need(這個as need怎麼理解呢?mmon程式主要是記憶體中sql資訊,ash資訊的收集工作,如果這些資訊需要寫入到磁碟(即一些資料字典表)中,那麼就需要MMNL程式負責寫入。)

另外一個程式是 MMNL ,是 Memory Monitor Light (MMNL)的縮寫,在部分文件中記錄為 Manageability Monitor Light .

 

對mmon和mmnl程式的一個協調工作總結:

MMON、MMNL和Mnnn這些程式用於填充自動工作負載儲存庫(Automatic WorkloadRepository,AWR),這是Oracle 10g中新增的一個特性。MMNL程式會根據排程從SGA將統計結果重新整理輸出至資料庫表。MMON程式用於“自動檢測”資料庫效能問題,並實現新增的自調整特性。Mnnn程式類似於作業佇列的Jnnn或Qnnn程式;MMON程式會請求這些從屬程式代表它完成工作。Mnnn程式本質上是臨時性的,它們將根據需要來來去去。

由此可見,MMON和MMNL程式宕掉是awr不能自動收集的根本原因。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2317695/viewspace-2651396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章