複製鏈接
請複製以下鏈接發送給好友

SMON

鎖定
SMON是系統監視器(System Monitor)的縮寫。如果Oracle實例失敗,則在SGA中的任何沒有寫到磁盤中的數據都會丟失。
中文名
SMON
外文名
System Monitor
全    稱
系統監視器

SMON基本簡介

有許多情況可能引起Oracle實例失敗,例如,操作系統的崩潰就會引起Oracle實例的失敗。當實例失敗之後,如果重新打開該數據庫,則背景進程SMON自動執行實例的復原操作。
DBWR是數據庫書寫器(Database Write)的縮寫.該服務器進程在緩衝存儲區中記錄所有的變化和數據,DBWR把來自數據庫的緩衝存儲區中的髒數據寫到數據文件中,以便確保數據庫緩衝存儲區中有足夠的空閒的緩衝存儲區。髒數據就是正在使用但是沒有寫到數據文件中的數據。
LGWR是日誌書寫器(Log Write)的縮寫。LGWR負責把重做日誌緩衝存儲區中的數據寫入到重做日誌文件中。
CKPT進程是檢查點(Checkpoint)的縮寫。該進程可以用來同步化數據庫的文件,它可以把日誌中的文件寫入到數據庫中。
PMON是進程監視器(Process Monitor)的縮寫。當取消當前的事務,或釋放進程佔用的鎖以及釋放其它資源之後,PMON進程清空那些失敗的進程。

SMON操作流程

Oracle數據庫中值得我們學習的地方有很多,在這篇文章裏我們主要講述的是Oracle SMON進程,主要介紹的是歸檔進程ARCH等一些方面的知識。我們大家都知道在Oracle數據庫中有兩個進程非常的渺小,但是其作用卻是非常的巨大。
由於其比較小而往往被數據庫管理員所忽視。筆者這次就給大家提醒提醒,不要忽視了這兩個進程的作用。如果利用的好的話,會減少系統管理員不少的工作。
一、系統監視進程SMON [1] 
這個進程對於Oracle數據庫來説,可以利用一句話來概括,即人小鬼大。其負責的內容並不是很多,但是對於數據的安全與數據庫的性能卻有很關鍵的作用。如隨着表空間中的數據不斷的建立、刪除、更新等等,在表空間中難免會產生碎片。由於這些碎片的存在,數據庫的性能會逐漸的降低。而現在系統監視進程SMON的作用,就可以解決這些碎片。
Oracle SMON進程會將各個表空間的空閒碎片合併在一起,讓數據庫系統更加容易分配。從而提高數據庫的性能。另外,在數據庫運行的過程中,會因為斷電或者其他的原因而發生故障。此時由於數據高速緩存中的髒緩存塊還沒有來得及寫入到數據文件中,從而導致數據的丟失。
在數據庫啓動的時候,系統監視進程SMON會在下一次啓動例程的時候,自動讀取重做日誌文件並對數據庫進行恢復。也就是説,進行將已提交的事物寫入數據文件(已經寫入到日誌文件中而沒有寫入到數據文件中的數據)、回退未提交的事務操作。可見,Oracle SMON進程是一個比較小但是卻非常重要的角色。
在管理這個進程的時候,筆者認為主要需要注意兩個問題。一是其啓動的時機。一般情況下,例程重新啓動的時候,會啓動這個系統監視進程。然後在這個例程運行期間,這個進程也會被系統定期的喚醒,然後其會檢查是否有工作需要其完成。最重要的是,在有需要的時候,數據庫管理員可以通過其他進程來啓動這個SMON系統系統監視進程,來完成一些特定的工作。
SMON的作用還包括合併空閒區間(coalesces free extent)。早期Oracle採用DMT字典管理表空間,不同於今時今日的LMT本地管理方式,DMT下通過對FET$和UET$2張字典基表的遞歸操作來管理區間。SMON每5分鐘(SMON wakes itself every 5 minutes and checks for tablespaces with default pctincrease != 0)會自發地去檢查哪些默認存儲參數pctincrease不等於0的字典管理表空間,注意這種清理工作是僅針對字典管理表空間的,而LMT本地管理表空間則無需,也不會合並。SMON對這些字典管理表空間上的連續相鄰的空閒Extents實施合併(coalesce)操作以合併成一個更大的空閒Extent,這同時也意味着SMON需要維護FET$字典基表。
二、歸檔進程ARCH
在重做日誌文件管理中有歸檔與非歸檔兩種模式。在日誌進行切換時,如果不對原先的日誌文件進行歸檔,而直接覆蓋的話,就叫做非歸檔模式。相反,在寫入下一個日誌文件的時候,會先對目標日誌文件進行歸檔,這就叫做歸檔模式。歸檔進程ARCH就是負責在重做日誌文件切換後將已經寫滿的重做日誌文件複製到歸檔日誌文件中,以防止循環寫入重做日誌文件時將其覆蓋。
所以説,只有數據庫運行在歸檔模式時,這個ARCH進程才會被啓動。在任何一種操作模式下,重做日誌文件都會被循環使用。所以當LGWR進程在進行日誌切換,需要用到下一個日誌文件時,則數據庫會被暫時的掛起,進行目標日誌文件的歸檔工作。
直到這個目標重做日誌文件歸檔完畢後,數據庫才會恢復正常。所以説,歸檔日誌的操作,有時候也會影響數據庫的性能,特別是當需要進行頻繁的大批量數據更改的時候。
那麼有什麼方法可以提高歸檔作業的效率呢?筆者如下一些建議可供數據庫管理員參考。
參考資料