共計(jì) 1349 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“怎么理解 Oracle 體系結(jié)構(gòu)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
1. 從一種角度講,數(shù)據(jù)庫(kù)可以分為數(shù)據(jù)庫(kù)軟件和數(shù)據(jù)庫(kù)文件。我們通常說(shuō)的數(shù)據(jù)庫(kù)指的是數(shù)據(jù)庫(kù)文件。通常情況下,將數(shù)據(jù)庫(kù)軟件安裝在服務(wù)器,數(shù)據(jù)庫(kù)文件存放在存儲(chǔ)中。
2. 從另一種角度講,數(shù)據(jù)庫(kù)可以分為數(shù)據(jù)庫(kù)文件和數(shù)據(jù)庫(kù)實(shí)例。這里可以將數(shù)據(jù)庫(kù)文件理解為靜態(tài),實(shí)例理解為動(dòng)態(tài)。用戶通過(guò)動(dòng)態(tài)的實(shí)例,改變數(shù)據(jù),再將改變的數(shù)據(jù)寫進(jìn)靜態(tài)的數(shù)據(jù)庫(kù)文件中。
3. 數(shù)據(jù)庫(kù)文件
數(shù)據(jù)庫(kù)文件的存放位置是在 $ORACLE_BASE/oradata/{db_unique_name}/ 目錄下。這里有三種文件
(1)控制文件(.ctl)
(2)日志文件(.log)
(3)數(shù)據(jù)文件(.dbf)
4. 數(shù)據(jù)庫(kù)實(shí)例
數(shù)據(jù)庫(kù)實(shí)例分成內(nèi)存和進(jìn)程。就像每個(gè)軟件運(yùn)行時(shí),都在服務(wù)器的內(nèi)存中劃出一部分空間分配給自己。Oracle 在 sqlplus 中執(zhí)行 startup 時(shí),實(shí)際上是開啟了實(shí)例,相當(dāng)于開啟了數(shù)據(jù)庫(kù)這個(gè)軟件,也就是開啟了內(nèi)存和進(jìn)程。內(nèi)存和進(jìn)程都會(huì)被移動(dòng)到服務(wù)器的內(nèi)存中。
5. 數(shù)據(jù)庫(kù)的內(nèi)存結(jié)構(gòu)包括:SGA(系統(tǒng)全局區(qū),共享的,這里共享是指 SGA 所有的空間,oracle 的進(jìn)程都可以訪問)和 PGA(進(jìn)程全局區(qū),非共享),這兩個(gè)東西都在內(nèi)存中。顧名思義,進(jìn)程全局區(qū)存放的是進(jìn)程。
(1)系統(tǒng)全局區(qū)(SGA)包括以下內(nèi)容:
(1)共享池
(2)流池
(3)JAVA 池
(4)大形池
(5)數(shù)據(jù)庫(kù)緩沖區(qū)
→ 數(shù)據(jù)庫(kù)寫進(jìn)程
(6)重做日志緩沖區(qū)
→ 日志寫進(jìn)程
這里,共享池和數(shù)據(jù)庫(kù)緩沖區(qū)容易出現(xiàn)問題。
(2)進(jìn)程全局區(qū)(PGA)包括以下兩大進(jìn)程:
后臺(tái)進(jìn)程和前臺(tái)進(jìn)程。這里的后臺(tái)進(jìn)程是官方名稱,前臺(tái)進(jìn)程是指服務(wù)器進(jìn)程。我這里將數(shù)據(jù)庫(kù)本身的進(jìn)程稱為后臺(tái)進(jìn)程,每一個(gè)數(shù)據(jù)庫(kù)對(duì)外的連接看成是一個(gè)前臺(tái)進(jìn)程,這樣更容易理解。每一個(gè)進(jìn)程(前后臺(tái))都有他屬于自己的空間,這些空間都在 PGA 里。我們需要關(guān)注的是前臺(tái)進(jìn)程對(duì) PGA 空間的占用,因?yàn)楹笈_(tái)進(jìn)程不怎么出問題。
6. ORACLE 后臺(tái)進(jìn)程
Oracle 的 SGA 有六大塊,PGA 有 5 大進(jìn)程,還有三種數(shù)據(jù)文件。
其中五大進(jìn)程為:
(1)CKPT(檢查點(diǎn)進(jìn)程)→ 控制文件
(2)SMON(系統(tǒng)監(jiān)控進(jìn)程)
(3)PMON(進(jìn)程監(jiān)控進(jìn)程)
(4)DBWN(數(shù)據(jù)庫(kù)寫進(jìn)程)→ 數(shù)據(jù)文件
(5)LGWR(日志寫進(jìn)程)→ 日志文件
7. 控制文件
控制文件內(nèi)存在兩大信息
(1)整個(gè)數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)信息在控制文件中進(jìn)行記錄。這些物理結(jié)構(gòu)包括整個(gè)數(shù)據(jù)庫(kù)包括多少個(gè)數(shù)據(jù)文件、日志文件等,以及這些文件的存放位置。
(2)數(shù)據(jù)庫(kù)當(dāng)前的一些運(yùn)行狀態(tài)信息。比如哪些數(shù)據(jù)文件是在線的,哪些數(shù)據(jù)文件是離線的,Oracle 正在使用哪一個(gè)日志文件,日志文件有什么問題。
8. 日志文件
日志文件也叫重做日志文件(redo log),是指 Oracle 所有對(duì)數(shù)據(jù)的修改,都會(huì)以日志的形式存放到日志文件中。日志文件中也就記錄著數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)塊的所有變化過(guò)程。
“怎么理解 Oracle 體系結(jié)構(gòu)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!