ORACLE實(shí)例的后臺(tái)進(jìn)程
更新時(shí)間:2009年09月29日 23:01:20 作者:
Oralce實(shí)例由內(nèi)存和后臺(tái)進(jìn)程構(gòu)成。實(shí)例后臺(tái)進(jìn)程在啟動(dòng)實(shí)例時(shí)啟動(dòng),在終止實(shí)例時(shí)終止運(yùn)行。
下面就來(lái)介紹一下這些在后臺(tái)辛勤工作的進(jìn)程們。系統(tǒng)檢測(cè)器(System Monitor,SMON)、進(jìn)程監(jiān)視器(Process Monitor,PMON)、數(shù)據(jù)庫(kù)寫(xiě)入器(Database Writer,DBWn)、日志寫(xiě)入器(Log Writer,LGWR)、檢查點(diǎn)進(jìn)程(Checkpoint Process,CKPT)
1、SMON:安裝和打開(kāi)數(shù)據(jù)庫(kù)。通過(guò)查找和驗(yàn)證數(shù)據(jù)庫(kù)控制文件來(lái)安裝數(shù)據(jù)庫(kù)。此后,通過(guò)查找和驗(yàn)證所有數(shù)據(jù)文件和聯(lián)機(jī)日志文件打開(kāi)數(shù)據(jù)庫(kù)。一旦打開(kāi)數(shù)據(jù)庫(kù)并使數(shù)據(jù)庫(kù)處于使用狀態(tài),SMON就負(fù)責(zé)執(zhí)行各種內(nèi)部管理任務(wù)。
2、PMON:用戶(hù)會(huì)話(huà)是連接到服務(wù)器進(jìn)程的用戶(hù)進(jìn)程。服務(wù)器進(jìn)程在會(huì)話(huà)創(chuàng)建時(shí)啟動(dòng),在繪畫(huà)結(jié)束時(shí)銷(xiāo)毀。如果會(huì)話(huà)正常結(jié)束,則用戶(hù)執(zhí)行的任何工作都會(huì)有序完成,服務(wù)器進(jìn)程將終止。如果非正常終止會(huì)話(huà),PMON將銷(xiāo)毀服務(wù)器進(jìn)程,將其PGA內(nèi)存返回給操作系統(tǒng),并回滾任何尚在進(jìn)行的未提交完成的事務(wù)。
3、DBWn:會(huì)話(huà)不直接將數(shù)據(jù)寫(xiě)入磁盤(pán),而是寫(xiě)入到數(shù)據(jù)庫(kù)高速緩存區(qū)。然后又?jǐn)?shù)據(jù)庫(kù)寫(xiě)入器負(fù)責(zé)將緩沖區(qū)寫(xiě)入到磁盤(pán)。一般來(lái)說(shuō)一個(gè)實(shí)例可能有多個(gè)寫(xiě)入器。依次為DBW0,DBW1等。默認(rèn)情況是8個(gè)CPU對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)寫(xiě)入器。
通常情況下,Oracle會(huì)盡可能的減少寫(xiě)入緩沖區(qū)的數(shù)量。因?yàn)镮O操作會(huì)降低性能。真實(shí)情況中,如果出現(xiàn)會(huì)話(huà)對(duì)某些緩沖區(qū)執(zhí)行寫(xiě)作,那么通常還會(huì)有會(huì)話(huà)對(duì)其進(jìn)行操作。這樣,就沒(méi)有必要將其寫(xiě)入到磁盤(pán)了。
DBWn采用極懶算法執(zhí)行寫(xiě)入:盡可能少,在盡可能少。有四種情況需要進(jìn)行些操作:沒(méi)有可用緩沖區(qū)、臟緩沖區(qū)過(guò)多、遇到三秒超時(shí),遇到檢查點(diǎn)。
沒(méi)有可用緩沖區(qū):服務(wù)器進(jìn)程在將塊復(fù)制到高速緩沖區(qū)之前,需要查找可用緩沖區(qū)??捎镁彌_區(qū)是既不臟也未被占用的緩沖區(qū)。如果查找可用緩沖區(qū)時(shí)間過(guò)長(zhǎng)(Oracle內(nèi)部自行設(shè)定),則會(huì)將臟緩沖區(qū)寫(xiě)入到磁盤(pán),以清理緩沖區(qū)。
臟緩沖區(qū)數(shù)量過(guò)多:在什么情況下謂多,有Oracle的內(nèi)部閾值確定,如果超過(guò)了,就會(huì)將一些緩沖區(qū)寫(xiě)到磁盤(pán)
三秒超時(shí):DBWn每三秒會(huì)對(duì)一些緩沖區(qū)清理一次。即使系統(tǒng)處于閑置狀態(tài),也會(huì)清理緩沖區(qū)。
請(qǐng)求檢查點(diǎn):遇到檢查點(diǎn)時(shí),會(huì)寫(xiě)入所有的緩沖區(qū)數(shù)據(jù)。此時(shí)系統(tǒng)性能下降。檢查點(diǎn)只有在不得已的情況下才會(huì)設(shè)置。關(guān)閉數(shù)據(jù)庫(kù)和關(guān)閉實(shí)例時(shí)會(huì)設(shè)置檢查點(diǎn),也可以使用命令來(lái)設(shè)置。
在這里需要注意一點(diǎn),在會(huì)話(huà)提交事務(wù)時(shí),DBWn什么也不做,DBWn按照自己的方式執(zhí)行。此時(shí)需要執(zhí)行的操作是:寫(xiě)入日志緩沖區(qū)的數(shù)據(jù)。
4、LGWR:日志寫(xiě)入器將日志緩沖區(qū)的內(nèi)容寫(xiě)入到磁盤(pán)上的聯(lián)機(jī)日志文件中。當(dāng)會(huì)話(huà)發(fā)出COMMIT時(shí),LGWR會(huì)實(shí)時(shí)寫(xiě)入:在LGWR將緩沖區(qū)寫(xiě)入磁盤(pán)時(shí),會(huì)話(huà)將會(huì)被掛起。在Oracle體系結(jié)構(gòu)中,LGWR是最大的瓶頸之一。DML的速度不能超過(guò)LGWR將更改矢量寫(xiě)入到磁盤(pán)的速度。在以下三種情況發(fā)生時(shí),LGWR將轉(zhuǎn)儲(chǔ)日志緩沖區(qū):
提交寫(xiě)入時(shí):已提交事務(wù)的每個(gè)更改矢量都可以再磁盤(pán)上的重做日志中得到,并可以再此后應(yīng)用于數(shù)據(jù)文件備份。
日志緩沖區(qū)的占用率達(dá)到1/3:在應(yīng)用程序中,通常在非常短的時(shí)間內(nèi)就能填充滿(mǎn)日志緩沖區(qū)的1/3,這時(shí)強(qiáng)制LGWR將更改矢量準(zhǔn)實(shí)時(shí)的寫(xiě)入磁盤(pán)。此后,當(dāng)會(huì)話(huà)發(fā)生COMMIT時(shí),幾乎沒(méi)有什么要寫(xiě)入的內(nèi)容:COMMIT可以立即完成。
DBWn需要將臟緩沖區(qū)從數(shù)據(jù)庫(kù)高速緩存區(qū)寫(xiě)入到數(shù)據(jù)文件時(shí):在DBWn執(zhí)行寫(xiě)入操作之前,總會(huì)執(zhí)行LGWR的寫(xiě)入操作。目的是:始終可以逆轉(zhuǎn)未提交的事務(wù)。DBWn可能會(huì)將未提交的事務(wù)寫(xiě)入數(shù)據(jù)文件,如果能過(guò)獲取逆轉(zhuǎn)事務(wù)所需的數(shù)據(jù)和更改矢量,這樣做就不會(huì)產(chǎn)生問(wèn)題。所以,在DBWn執(zhí)行寫(xiě)入之前,需要執(zhí)行LGWR的寫(xiě)入,以確保這些數(shù)據(jù)進(jìn)入重做日志文件中。
5、CKPT:系統(tǒng)崩潰后,必須從重做日志提取與臟緩沖區(qū)對(duì)應(yīng)的所有更改矢量,并將其應(yīng)用于數(shù)據(jù)塊。這就是恢復(fù)過(guò)程。頻繁的檢查點(diǎn)確保:可以將臟緩沖區(qū)快速寫(xiě)入磁盤(pán),從而最大程度的減少崩潰發(fā)生后必須應(yīng)用的重做量。在Oracle8i之后,采用增量檢查點(diǎn)機(jī)制,DBWn以固定速率寫(xiě)出臟緩沖區(qū),因此DBWn和LGWR之間始終有一個(gè)可以預(yù)見(jiàn)的差距。使用增量檢查點(diǎn)時(shí)系統(tǒng)性能更加平穩(wěn),恢復(fù)時(shí)間可以預(yù)測(cè)。
當(dāng)然,在10g之后,Oracle又新增了幾個(gè)進(jìn)程,這里簡(jiǎn)單介紹一下:
MMON:管理監(jiān)視器(Maniageability Monitor),數(shù)據(jù)塊的自我監(jiān)視和自我調(diào)整的支持進(jìn)程。
MMNL:MMON的輔助進(jìn)程。
MMAN:支持內(nèi)存分布的自動(dòng)調(diào)整。
1、SMON:安裝和打開(kāi)數(shù)據(jù)庫(kù)。通過(guò)查找和驗(yàn)證數(shù)據(jù)庫(kù)控制文件來(lái)安裝數(shù)據(jù)庫(kù)。此后,通過(guò)查找和驗(yàn)證所有數(shù)據(jù)文件和聯(lián)機(jī)日志文件打開(kāi)數(shù)據(jù)庫(kù)。一旦打開(kāi)數(shù)據(jù)庫(kù)并使數(shù)據(jù)庫(kù)處于使用狀態(tài),SMON就負(fù)責(zé)執(zhí)行各種內(nèi)部管理任務(wù)。
2、PMON:用戶(hù)會(huì)話(huà)是連接到服務(wù)器進(jìn)程的用戶(hù)進(jìn)程。服務(wù)器進(jìn)程在會(huì)話(huà)創(chuàng)建時(shí)啟動(dòng),在繪畫(huà)結(jié)束時(shí)銷(xiāo)毀。如果會(huì)話(huà)正常結(jié)束,則用戶(hù)執(zhí)行的任何工作都會(huì)有序完成,服務(wù)器進(jìn)程將終止。如果非正常終止會(huì)話(huà),PMON將銷(xiāo)毀服務(wù)器進(jìn)程,將其PGA內(nèi)存返回給操作系統(tǒng),并回滾任何尚在進(jìn)行的未提交完成的事務(wù)。
3、DBWn:會(huì)話(huà)不直接將數(shù)據(jù)寫(xiě)入磁盤(pán),而是寫(xiě)入到數(shù)據(jù)庫(kù)高速緩存區(qū)。然后又?jǐn)?shù)據(jù)庫(kù)寫(xiě)入器負(fù)責(zé)將緩沖區(qū)寫(xiě)入到磁盤(pán)。一般來(lái)說(shuō)一個(gè)實(shí)例可能有多個(gè)寫(xiě)入器。依次為DBW0,DBW1等。默認(rèn)情況是8個(gè)CPU對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)寫(xiě)入器。
通常情況下,Oracle會(huì)盡可能的減少寫(xiě)入緩沖區(qū)的數(shù)量。因?yàn)镮O操作會(huì)降低性能。真實(shí)情況中,如果出現(xiàn)會(huì)話(huà)對(duì)某些緩沖區(qū)執(zhí)行寫(xiě)作,那么通常還會(huì)有會(huì)話(huà)對(duì)其進(jìn)行操作。這樣,就沒(méi)有必要將其寫(xiě)入到磁盤(pán)了。
DBWn采用極懶算法執(zhí)行寫(xiě)入:盡可能少,在盡可能少。有四種情況需要進(jìn)行些操作:沒(méi)有可用緩沖區(qū)、臟緩沖區(qū)過(guò)多、遇到三秒超時(shí),遇到檢查點(diǎn)。
沒(méi)有可用緩沖區(qū):服務(wù)器進(jìn)程在將塊復(fù)制到高速緩沖區(qū)之前,需要查找可用緩沖區(qū)??捎镁彌_區(qū)是既不臟也未被占用的緩沖區(qū)。如果查找可用緩沖區(qū)時(shí)間過(guò)長(zhǎng)(Oracle內(nèi)部自行設(shè)定),則會(huì)將臟緩沖區(qū)寫(xiě)入到磁盤(pán),以清理緩沖區(qū)。
臟緩沖區(qū)數(shù)量過(guò)多:在什么情況下謂多,有Oracle的內(nèi)部閾值確定,如果超過(guò)了,就會(huì)將一些緩沖區(qū)寫(xiě)到磁盤(pán)
三秒超時(shí):DBWn每三秒會(huì)對(duì)一些緩沖區(qū)清理一次。即使系統(tǒng)處于閑置狀態(tài),也會(huì)清理緩沖區(qū)。
請(qǐng)求檢查點(diǎn):遇到檢查點(diǎn)時(shí),會(huì)寫(xiě)入所有的緩沖區(qū)數(shù)據(jù)。此時(shí)系統(tǒng)性能下降。檢查點(diǎn)只有在不得已的情況下才會(huì)設(shè)置。關(guān)閉數(shù)據(jù)庫(kù)和關(guān)閉實(shí)例時(shí)會(huì)設(shè)置檢查點(diǎn),也可以使用命令來(lái)設(shè)置。
在這里需要注意一點(diǎn),在會(huì)話(huà)提交事務(wù)時(shí),DBWn什么也不做,DBWn按照自己的方式執(zhí)行。此時(shí)需要執(zhí)行的操作是:寫(xiě)入日志緩沖區(qū)的數(shù)據(jù)。
4、LGWR:日志寫(xiě)入器將日志緩沖區(qū)的內(nèi)容寫(xiě)入到磁盤(pán)上的聯(lián)機(jī)日志文件中。當(dāng)會(huì)話(huà)發(fā)出COMMIT時(shí),LGWR會(huì)實(shí)時(shí)寫(xiě)入:在LGWR將緩沖區(qū)寫(xiě)入磁盤(pán)時(shí),會(huì)話(huà)將會(huì)被掛起。在Oracle體系結(jié)構(gòu)中,LGWR是最大的瓶頸之一。DML的速度不能超過(guò)LGWR將更改矢量寫(xiě)入到磁盤(pán)的速度。在以下三種情況發(fā)生時(shí),LGWR將轉(zhuǎn)儲(chǔ)日志緩沖區(qū):
提交寫(xiě)入時(shí):已提交事務(wù)的每個(gè)更改矢量都可以再磁盤(pán)上的重做日志中得到,并可以再此后應(yīng)用于數(shù)據(jù)文件備份。
日志緩沖區(qū)的占用率達(dá)到1/3:在應(yīng)用程序中,通常在非常短的時(shí)間內(nèi)就能填充滿(mǎn)日志緩沖區(qū)的1/3,這時(shí)強(qiáng)制LGWR將更改矢量準(zhǔn)實(shí)時(shí)的寫(xiě)入磁盤(pán)。此后,當(dāng)會(huì)話(huà)發(fā)生COMMIT時(shí),幾乎沒(méi)有什么要寫(xiě)入的內(nèi)容:COMMIT可以立即完成。
DBWn需要將臟緩沖區(qū)從數(shù)據(jù)庫(kù)高速緩存區(qū)寫(xiě)入到數(shù)據(jù)文件時(shí):在DBWn執(zhí)行寫(xiě)入操作之前,總會(huì)執(zhí)行LGWR的寫(xiě)入操作。目的是:始終可以逆轉(zhuǎn)未提交的事務(wù)。DBWn可能會(huì)將未提交的事務(wù)寫(xiě)入數(shù)據(jù)文件,如果能過(guò)獲取逆轉(zhuǎn)事務(wù)所需的數(shù)據(jù)和更改矢量,這樣做就不會(huì)產(chǎn)生問(wèn)題。所以,在DBWn執(zhí)行寫(xiě)入之前,需要執(zhí)行LGWR的寫(xiě)入,以確保這些數(shù)據(jù)進(jìn)入重做日志文件中。
5、CKPT:系統(tǒng)崩潰后,必須從重做日志提取與臟緩沖區(qū)對(duì)應(yīng)的所有更改矢量,并將其應(yīng)用于數(shù)據(jù)塊。這就是恢復(fù)過(guò)程。頻繁的檢查點(diǎn)確保:可以將臟緩沖區(qū)快速寫(xiě)入磁盤(pán),從而最大程度的減少崩潰發(fā)生后必須應(yīng)用的重做量。在Oracle8i之后,采用增量檢查點(diǎn)機(jī)制,DBWn以固定速率寫(xiě)出臟緩沖區(qū),因此DBWn和LGWR之間始終有一個(gè)可以預(yù)見(jiàn)的差距。使用增量檢查點(diǎn)時(shí)系統(tǒng)性能更加平穩(wěn),恢復(fù)時(shí)間可以預(yù)測(cè)。
當(dāng)然,在10g之后,Oracle又新增了幾個(gè)進(jìn)程,這里簡(jiǎn)單介紹一下:
MMON:管理監(jiān)視器(Maniageability Monitor),數(shù)據(jù)塊的自我監(jiān)視和自我調(diào)整的支持進(jìn)程。
MMNL:MMON的輔助進(jìn)程。
MMAN:支持內(nèi)存分布的自動(dòng)調(diào)整。
相關(guān)文章
Oracle數(shù)字類(lèi)型number自增的實(shí)現(xiàn)代碼
這篇文章主要介紹了Oracle數(shù)字類(lèi)型number自增的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-08-08
Oracle單實(shí)例升級(jí)補(bǔ)丁全過(guò)程記錄
這篇文章主要介紹了Oracle單實(shí)例升級(jí)補(bǔ)丁,oracle19.3升級(jí)補(bǔ)丁到19.18,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Oracle復(fù)合索引與空值的索引使用問(wèn)題小結(jié)
最近小編在群里討論sql優(yōu)化的問(wèn)題,今天小編給大家?guī)?lái)了Oracle復(fù)合索引與空值的索引使用問(wèn)題小結(jié),需要的朋友參考下吧2018-02-02
Oracle merge合并更新函數(shù)實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Oracle merge合并更新函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
oracle數(shù)據(jù)與文本導(dǎo)入導(dǎo)出源碼示例
這篇文章主要介紹了oracle數(shù)據(jù)與文本導(dǎo)入導(dǎo)出源碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
DB2數(shù)據(jù)庫(kù)切換為oracle數(shù)據(jù)庫(kù)經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)
下面小編就為大家?guī)?lái)一篇DB2數(shù)據(jù)庫(kù)切換為oracle數(shù)據(jù)庫(kù)經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04

