oracle 的伺服器程式(PMON, SMON,CKPT,DBWn,LGWR,ARCn)
PMON
PMON,程式監視。PMON主要有3個用途:
1,在程式非正常中斷後,做清理工作。例如:dedicated server失敗了或者因為一些原因被殺死,這是PMON的工作分兩種。第一,是對dedicated server所做的工作進行恢復或撤銷。第二:是釋放dedicated server佔用的資源。PMON會把失敗程式的未提交的工作進行rollback,釋放鎖,釋放SGA空間
2,在程式abort後,PMON進行清理工作。PMON會監視oracle其他的後臺程式,並在需要的時候對它們進行重建。如果shared server或者dispatcher失敗後,PMON會介入其中,並在清理完失敗程式後,重建一個shared server或dispatcher。例如:在資料庫進行寫日誌的時候LGWR程式失敗,這是個很嚴重的錯誤。解決這種問題最安全的方法是立即中斷例項,並恢復。
3,PMON的第三個用途是,向Oracle TNS listener註冊例項資訊。在例項啟動的時候,PMON會查詢oracle的預設埠(1521埠)是否處於工作狀態。如果這個埠已經處於工作狀態,那麼該例項就可以啟動,PMON把例項的相關資訊告訴listener,包括服務名、例項的資訊等。如果listener沒有啟動,PMON就會定期的嘗試去連線listener。這裡要注意如果oracle沒有是預設的1521埠,而是使用其他的埠時,PMON和listener的連線過程和使用1521埠還是很相似的,除了,在使用非預設埠時,listener的地址要在引數LOCAL_LISTENER中指定。
SMON
SMON,系統監視。SMON的工作如下:
1,清理臨時空間。
2,聚合空閒空間。如果使用dictionary-managed 方式來管理表空間,SMON就要負責把空閒的extent聚合成大的空閒extent。這種情況只有在表空間的管理方式是dictionary-managed ,且引數PCTINCREASE被設定成非零值的時候才會發生。
3,對不可用檔案的事務恢復。在資料庫啟動的時候,SMON會恢復失敗的事務,這些事務是在例項恢復或crash恢復的時候被跳過的。例如:在磁碟上某哥檔案不可用了,在這個檔案又重新可用後,SMON會恢復它。
4,在RAC的單節點故障上進行例項恢復。在RAC 環境下,如果cluster(簇群)中有一個例項失敗了(如:例項所在的機器掛掉了),在這個cluster上的其他的節點會開啟失敗例項的redo log,並恢復失敗例項
5,清理OBJ$。OBJ$是個低階別的資料字典,它幾乎包含了資料庫中所有的objects的entry。多數時候,有的entries的objects已經被刪除了,或者當前的entry代表的不再是最新的objects。SMON就負責刪除這些entry資訊了
6,收縮undo segments。SMON會自動把rollback segment收縮到最優的大小
7,離線rollback segments。DBA可能需要把一個處於active狀態的事務的rollback segment離線。此時如果事務正在使用這個已經離線的rollback segment,那麼這個segment並未真的離線,而是被標記為“pending offline"。在後臺,SMON會一直嘗試離線這個segment,直到成功。
此外,SMON還會重新整理檢視DBA_TAB_MONITORING的統計資訊等。SMON會消耗大量的CPU。SMON會定期地,或被其他後臺程式喚醒,來執行清理工作。
CKPT
CKPT,檢查點程式。CKPT程式並不像它的名字說的那樣進行checkpoint,執行checkpoint是DBWn的工作。它只是來更新資料檔案頭的。oracle8.0之前,CKPT只是一個可選的程式。但oracle8.0之後,CKPT程式就程式被開啟。過去更新資料檔案頭的checkpoint 資訊是LGWR的工作,然而,隨著資料庫檔案的增加,LGWR的負擔也變得越來越重。如果LGWR要更新100,甚至1000哥檔案頭,那麼就會有很多的session等待很長時間去commit。所有CKPT就把這個工作承擔下來了
DBWn
DBWn,資料寫程式。DBWn負責把緩衝區的髒資料寫到磁碟上。在oracle發生switch log files的時候,會發生checkpoint。checkpoint發生後,在redo log中的資料就可以被覆蓋了。如果在redo log被填滿,且要重新利用redo log 來存放新的資料時,而此時checkpoint還為完成,oracle就會返回”checkpoint not complete“。
DBWn的效能相當重要。如果DBWn寫資料的速度不夠快,這樣釋放出空閒buffer的速度也就不會快。那麼Free Buffer Waits 和Write Complete Waits的值就會很快的增長。
oracle可以配置多達36個DBW程式。從DBW0到DBW35.多數系統只有一個DBW程式,但在多CPU系統中就可能不止一個DBW程式了。這樣做的目的是分散寫資料的負擔,保證SGA中有足夠的空閒空間。
最佳化情況下,DBW是透過非同步(asynchronous)I/O向磁碟寫資料的。透過非同步I/O,DBW先把blocks組成一個batch(一捆),再把batch遞交給OS,DBW不會等待OS把batch寫入到磁碟,而是返回,繼續收集下一個batch。當OS完成寫後,會非同步通知DBW程式,已經把batch成功的寫入到磁碟了。
最後,DBW程式是分散地把資料寫到磁碟上的。而LGWR是連續寫redo log。分散寫要比連續寫耗時的多。但是,DBW是在後臺進行分散寫的,而LGWR做連續寫是為了減少使用者等待的時間。
疑問:TOM說DBWn是把blocks組成一個batch,然後非同步交給OS,讓OS寫到磁碟的。為啥又說DBWn是分散寫資料的,寫資料的活不是OS乾的嗎?
LGWR
LGWR,日誌寫程式。LGWR是把SGA中redo log buffer的資訊寫到redo log file的程式。LGWR會在下面情況發生:
1,每個3秒鐘,進行一次LGWR
2,任何事務進行了commit
3,當redo log buffer是1/3滿,或者裡面有1MB的資料
基於以上的原因,把redo log buffer設定的很大就沒必要的。
ARCn
ARCn,歸檔程式。ARCn的工作是在LGWR把onlone redo log填滿後,ARCn把redo log file的內容copy到其他的地方。歸檔日誌可以用來做media recovery。online redo log 是被用來為例項失敗的時候,恢復資料檔案。而歸檔日誌是被用來在media recovery的時候,恢復資料檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24742969/viewspace-1614120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PMON、SMON、DBWn、LGWR、CKPT、ARCH等後臺程式說明
- DBWn,CKPT,LGWR程式
- oracle smon與pmon ckpt功能的作用(ZT)Oracle
- CKPT、DBWn、LGWR與3S的關係
- LGWR DBWR SMON 等程式說明
- Oracle DBWR,LGWR,CKPT,ARCH 觸發條件Oracle
- Oracle DBWR,LGWR,CKPT,ARCH 觸發條件 總結Oracle
- 關於pmon、smon、mman、mmon、mmnl後臺程式的解釋
- oracle實驗記錄(buffer_cache分析(4)dbwr,lgwr,ckpt)Oracle
- Oracle LGWR程式Oracle
- Oracle SMON程式的作用Oracle
- DBWR,LGWR,CKPT,ARCH觸發條件總結
- DBWR,LGWR,CKPT,ARCH等常見後臺程式觸發條件彙總
- 【eygle】Oracle程式:SMON的功能與作用Oracle
- Oracle程式:SMON的功能與作用 ZTOracle
- 關於oracle的ckpt(檢查點程式)Oracle
- Oracle SMON系統監視程式Oracle
- SMON 程式的作用
- 【蓋國強】Oracle程式:SMON的功能與作用Oracle
- 【Oracle】-【體系結構-LGWR】-LGWR的一些理解Oracle
- Oracle 的Lgwr Worker的工作原理Oracle
- Oracle CKPT再複習Oracle
- SMON程式詳解
- 【筆記】[lz042.10g.Administrator.I.SG] DBWn、LGWR什麼時候寫?筆記
- oracle實驗記錄 (CKPT的觸發)Oracle
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- Oracle9i DBWn 觸發條件Oracle
- DBWn程式觸發4個條件
- ORACLE 9i歸檔之ARCn: Media recovery disabledOracle
- smon程式互為死鎖案例--oracle一個bug處理Oracle
- PMON failed to acquire latch, see PMON dumpAIUI
- 觸發CKPT(checkpoint)程式的幾個條件
- Oracle9i CKPT 觸發條件Oracle
- PMON failed to acquire latch, see PMON dump in alert logAIUI
- Oracle9i LGWR 觸發條件Oracle
- oracle 11g pmon工作內容系列一Oracle
- oracle 11g pmon工作內容系列二Oracle
- oracle 11g pmon工作內容系列三Oracle