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