標籤:oracle 伺服器
後台進程是指由Oracle伺服器隱含執行的進程。當啟動常式時,Oracle不僅會分配SGA,而且還會啟動後台進程;當關閉常式時,Oracle不僅會釋放SGA所佔用的記憶體空間,而且還會釋放後台進程所佔用的CPU和記憶體資源。Oracle提供了許多後台進程,下面介紹常用的後台進程SMON、PMON、DBWR、LGWR、CKPT、ARCH。
1、SMON(System Monitor)
SMON用於執行常式恢複,假定在資料庫運行過程中出現常式失敗(斷電、記憶體故障、後台進程例外等),此時SGA資訊尚未被完全寫入到磁碟(資料檔案、重做日誌)。當重新開啟資料庫時,後台進程SMON會按照以下步驟自動執行常式恢複:
(1.1)REDO:重新應用那些被記載道重做日誌但是沒有寫入到資料檔案的資料,因為所有被提交的事務都已經記錄在重做日誌,所以可以確保恢複交易資料。
(1.2)開啟資料庫。在開啟資料庫時,既包含了被提交的資料,也包含了未被提交的資料(加鎖)。
(1.3)UNDO:取消未提交資料。在開啟資料庫之後,Oracle會自動使用UNDO段回退未提交的資料。
2、PMON(Process Monitor)
PMON用於監視伺服器進程的執行,並且在伺服器處理序失敗時清除該伺服器處理序。當訪問Oracle Server時,Oracle會在伺服器端為使用者進程(應用程式對應的進程)分配伺服器處理序。假定使用者常式因地址例外意外終止運行,PMON可以輪詢檢測到該伺服器處理序,並執行以下操作:
(2.1)回退使用者的當前事務
(2.2)釋放伺服器處理序所佔用的表鎖和行鎖
(2.3)釋放使用者所佔用的其他資源
3、DBWR(Database Writer)
DBWR用於將資料快取的髒緩衝區資料寫入到資料庫檔案中。當執行DML操作時,伺服器處理序會修改緩衝區,並且將這些緩衝區標示為“髒緩衝區”,將來這些髒緩衝區的資料會有後台進程DBWR寫入到資料檔案中。預設情況下只有一個DBW0進程。通過設定初始化參數db_writer_processes可以定義最多10個DBWR進程(DBW0~DBW9),在出現以下情況時,DBWR進程會開始工作。
(3.1)系統發出檢查點(checkpoint)
(3.2)伺服器處理序不能找到空閑緩衝區
(3.3)刪除或截斷表
(3.4)使資料表空間正常離線(ALTER TABLE ......OFFLINE NORMAL)
(3.5)開始資料表空間備份(ALTER TABLESPACE ......BEGIN BACKUP)
4、LGWR(Log Writer)
LGWR用於將重做日誌緩衝區記載的全部內容寫入到重做日誌。當執行DML或DDL語句時,伺服器處理序首先將事務變化寫入到重做日誌緩衝區,然後才會修改資料快取。注意Oracle總是“先日誌後修改”(先記載變化後修改資料)。因此,在將髒資料寫入到資料檔案之前,Oracle首先將事務變化寫入到重做日誌。也就是說在DBWR工作之前,LGWR首先將事務變化寫入到重做日誌。在出現以下情況時,LGWR進程會開始工作。
(4.1)提交事務(COMMIT)
(4.2)每隔三秒
(4.3)當重做資訊超過1M時
(4.4)重做日誌緩衝區已有1/3填滿
(4.5)在DBWR進程將髒緩衝區寫入到資料檔案之前
5、CKPT(Checkpoint Process)
CKPT用於發出檢查點(Checkpoint ),並且檢查點會同步資料庫的的資料檔案、控制檔案和重做日誌。當發出檢查點時,後台進程CKPT會將檢查點時刻的SCN(System Change Number)寫入到控制檔案和資料檔案頭部,同時會促使後台進程DBWR將所有髒緩衝區資料寫入到資料檔案。當發出檢查點時,不僅後台進程CKPT和DBWR要開始工作,而且LGWR也會將重做日誌緩衝區寫入到重做日誌,從而確保了資料檔案、控制檔案和重做日誌的一致性。在以下情況下CKPT會開始工作:
(5.1)日誌切換
(5.2)關閉常式(SHUTDOWM ABORT除外)
(5.3)手工檢查點操作(ALTER SYSTEM CHECKPOINT)
(5.4)由初始化參數fase_start_mttr_target強制發出檢查點
6、ARCH(Archive Process)
ARCH用於將重做日誌的事務變化複製到歸檔日誌中,該後台進程只有在(ARCHIVELOG)模式下才會被啟動。預設情況下只會啟動兩個歸檔進程(ARC0、ARC1),通過設定初始化參數log_archive_max_processes可以最多定義10個歸檔進程(ARC0~ARC9),在(ARCHIVELOG)模式下當進行日誌切換時會自動產生歸檔日誌。
在Oracle伺服器中,最多可以啟動100多個後台進程。但當啟動了常式的時候,後台進程SMON、PMON、CKPT、DBWR、LGWR一直處於啟動狀態。通過查詢動態效能檢視可以顯示所有後台資訊。如:select * from V$BGPROCESS
本文出自 “努力奔向前方” 部落格,請務必保留此出處http://liucb.blog.51cto.com/3230681/1576319
oracle後台進程