Oracle服務(wù)器結(jié)構(gòu)詳解(最新推薦)
一、Oracle服務(wù)器主要組成
- 實(shí)例(系統(tǒng)全局區(qū)SGA、后臺(tái)進(jìn)程)
- 數(shù)據(jù)庫
- 程序全局區(qū)(PGA)
- 前臺(tái)進(jìn)程
二、系統(tǒng)全局區(qū)SGA
1.高速數(shù)據(jù)緩沖區(qū)
用來存放Oracle系統(tǒng)最近訪問過的數(shù)據(jù)塊,經(jīng)?;蛘咦罱辉L問的數(shù)據(jù)塊會(huì)被放置到高速數(shù)據(jù)緩沖區(qū)的前端,不經(jīng)常被訪問的會(huì)被放置到后端
2.共享池
存儲(chǔ)最近執(zhí)行過的SQL語句和最近使用過的數(shù)據(jù)定義
共享池的大小由SHARE_POOL_SIZE
決定
共享池包含:
庫高速緩沖區(qū):包含SQL語句文本,分析代碼和執(zhí)行計(jì)劃
字典高速緩沖區(qū):包含表,列和其他對象定義和權(quán)限
3.Redo buffer(重做日志緩沖區(qū))
跟蹤服務(wù)器和后臺(tái)進(jìn)程對數(shù)據(jù)庫所做的更改,它的字節(jié)大小由LOG_BUFFER 參數(shù)定義。記錄被更改的塊、更改位置以及重做條目中的新值;重做條目不區(qū)分被更改塊的類型,它只記錄塊中哪些字節(jié)發(fā)生了更改。重做日志緩沖區(qū)連續(xù)使用,而且一個(gè)事務(wù)處理所做的更改可能會(huì)與其它事務(wù)處理的更改交叉存??;它是在已滿后可以重新使用的循環(huán)緩沖區(qū),但是只有在所有舊的重做條目都記錄在重做日志文件之后才能使用。
COMMIT提交處理:
服務(wù)器進(jìn)程隨同系統(tǒng)更改號(hào)(SCN)一起在重做日志緩沖區(qū)中放置一個(gè)提交記錄。
LGWR 向重做日志文件中連續(xù)寫入直到提交記錄含提交記錄的所有重做日志緩沖區(qū)條目。這之后,Oracle 服務(wù)器就能夠保證即使存在實(shí)例失敗也不會(huì)丟失更改。
通知用戶COMMIT 命令已完成。
服務(wù)器進(jìn)程記錄信息以指出事務(wù)處理已完成并且可以釋放資源鎖。
4.大共享區(qū)
存儲(chǔ)不與SQL語句處理直接相關(guān)的大型內(nèi)存結(jié)構(gòu),如在備份和還原操作中復(fù)制的數(shù)據(jù)塊。
5.固定SGA
存儲(chǔ)Java代碼
三、用戶進(jìn)程全局區(qū)-PGA
又稱程序全局區(qū),可以把代碼、全局變量和數(shù)據(jù)結(jié)構(gòu)都存儲(chǔ)在其中,每個(gè)Oracle服務(wù)器進(jìn)程只擁有自己的那部分PGA資源
PGA包含:
私有SQL區(qū)
會(huì)話區(qū)
四、服務(wù)器進(jìn)程
處理用戶會(huì)話過程中的SQL語句和SQL Plus命令
五、后臺(tái)進(jìn)程
1.數(shù)據(jù)庫寫入程序(DBW0)
數(shù)據(jù)庫寫入程序?qū)⒒覕?shù)據(jù)緩沖區(qū)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文件。它確保有足夠數(shù)量的空閑緩沖區(qū)(即當(dāng)服務(wù)器進(jìn)程需要讀取數(shù)據(jù)文件中的塊時(shí)可以覆蓋的緩沖區(qū)) 在數(shù)據(jù)庫緩沖區(qū)高速緩存中可用。由于服務(wù)器進(jìn)程只在緩沖區(qū)高速緩存中進(jìn)行更改,因此數(shù)據(jù)庫性能得到改善,而且DBW0 延遲寫入數(shù)據(jù)文件直到發(fā)生下列事件之一:
- 灰數(shù)據(jù)緩沖區(qū)的數(shù)量達(dá)到閾值
- 當(dāng)進(jìn)行掃描而無法找到任何空閑緩沖區(qū)時(shí)進(jìn)程掃描了指定數(shù)量的塊
- 出現(xiàn)超時(shí)(每三秒)
- 出現(xiàn)檢查點(diǎn)(檢查點(diǎn)是使數(shù)據(jù)庫緩沖區(qū)高速緩存與數(shù)據(jù)文件同步的一種方法)
2.日志寫入程序(LGWR)
將重做日志緩沖區(qū)中注冊的更改寫入重做日志文件。
LGWR 在下列情況下執(zhí)行從重做日志緩沖區(qū)到重做日志文件的連續(xù)寫入:
當(dāng)提交事務(wù)處理時(shí)
當(dāng)重做日志緩沖區(qū)的三分之一已滿時(shí)
當(dāng)重做日志緩沖區(qū)中記錄了超過1 MB 的更改時(shí)
在 DBW0 將數(shù)據(jù)庫緩沖區(qū)高速緩存中修改的塊寫入數(shù)據(jù)文件以前因?yàn)榛謴?fù)操作需要重做,所以LGWR 只在重做寫入磁盤后確認(rèn)COMMIT 命令
3.系統(tǒng)監(jiān)控程序(SMON)
檢查數(shù)據(jù)庫的一致性.果Oracle 實(shí)例失敗,那么SGA 中尚未寫入磁盤的所有信息都會(huì)丟失。實(shí)例丟失后,后臺(tái)進(jìn)程SMON 在數(shù)據(jù)庫重新打開時(shí)自動(dòng)執(zhí)行實(shí)例恢復(fù)?;謴?fù)實(shí)例需要進(jìn)行以下步驟:
前滾以恢復(fù)尚未記入數(shù)據(jù)文件但已經(jīng)記入聯(lián)機(jī)重做日志中的數(shù)據(jù)。由于實(shí)例失敗過程中SGA 的丟失,這些數(shù)據(jù)尚未寫入磁盤。在這個(gè)進(jìn)程中,SMON 讀取重做日志文件并將重做日志中記錄的更改應(yīng)用到數(shù)據(jù)塊中。由于所有提交的事務(wù)處理都已被寫入重做日志,因此該進(jìn)程完全恢復(fù)這些事務(wù)處理。
打開數(shù)據(jù)庫以允許用戶登錄。未被未恢復(fù)事務(wù)處理鎖定的任何數(shù)據(jù)都立即可用。
回退未提交的事務(wù)處理。它們由SMON 回退,或在訪問鎖定的數(shù)據(jù)時(shí)由單個(gè)服務(wù)器進(jìn)程回退。
SMON 也執(zhí)行一些空間維護(hù)功能:
聯(lián)合或合并數(shù)據(jù)文件中空閑空間的鄰近區(qū)域。
回收臨時(shí)段將它們作為數(shù)據(jù)文件中的空閑空間返回。臨時(shí)段用于在SQL 語句處理過程中存儲(chǔ)數(shù)據(jù)。
4.過程監(jiān)視器(PMON)
負(fù)責(zé)在一個(gè)Oracle 進(jìn)程失敗時(shí)清理資源,進(jìn)程失敗后,后臺(tái)進(jìn)程PMON 通過下面的方法進(jìn)行清理:
- 回退用戶的當(dāng)前事務(wù)處理
- 釋放當(dāng)前保留的所有表鎖或行鎖
- 釋放用戶當(dāng)前保留的其它資源
5.檢查點(diǎn)進(jìn)程(CKPT)
負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫狀態(tài)信息。
到此這篇關(guān)于Oracle--服務(wù)器結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)Oracle服務(wù)器結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle報(bào)錯(cuò)(ORA-00600)問題處理
最近在做一個(gè)項(xiàng)目,使用的是Oracle數(shù)據(jù)庫,近兩天不知道怎么回事,告警日志里總是顯示這個(gè)錯(cuò)誤(ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[])度娘了一下,終于找到解決方式,分享給大家2014-08-08Oracle數(shù)據(jù)庫系統(tǒng)使用經(jīng)驗(yàn)六則
Oracle數(shù)據(jù)庫系統(tǒng)使用經(jīng)驗(yàn)六則...2007-03-03Oracle Linux 6.8安裝 mysql 5.7.17的詳細(xì)教程
這篇文章主要介紹了Oracle Linux 6.8安裝 mysql 5.7.17的詳細(xì)教程,需要的朋友可以參考下2017-06-06oracle 身份證校驗(yàn)函數(shù)的實(shí)例代碼
這篇文章主要介紹了oracle 身份證校驗(yàn)函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01oracle11g密碼復(fù)雜性校驗(yàn)開啟關(guān)閉方式
這篇文章主要介紹了oracle11g密碼復(fù)雜性校驗(yàn)開啟關(guān)閉方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Linux 創(chuàng)建oracle數(shù)據(jù)庫的詳細(xì)過程
這篇文章主要介紹了Linux 創(chuàng)建oracle數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03