共計(jì) 2063 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要講解了“Oracle 基礎(chǔ)知識(shí)點(diǎn)總結(jié)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Oracle 基礎(chǔ)知識(shí)點(diǎn)總結(jié)”吧!
首先上一張 Oracle 體系結(jié)構(gòu)圖,與每個(gè)初次見到這張圖的人一樣,腦子里是一團(tuán)漿糊,雖然我大學(xué)里學(xué)過(guò)數(shù)據(jù)庫(kù)但是和 Oracle 毫不沾邊,后來(lái)因一次陰差陽(yáng)錯(cuò)的機(jī)會(huì)接觸到了 Oracle。
正文:
Oracle 服務(wù)器由兩大部分組成
實(shí)例結(jié)構(gòu) + 數(shù)據(jù)庫(kù)結(jié)構(gòu) =Oracle 服務(wù)器
實(shí)例內(nèi)存結(jié)構(gòu)包含 SGA 系統(tǒng)全局區(qū),實(shí)例進(jìn)程包含一些重要的后臺(tái)進(jìn)程
但 Oracle 內(nèi)存結(jié)構(gòu)不僅有 SGA 還有 PGA、UGA 等
進(jìn)程結(jié)構(gòu)不僅包含后臺(tái)進(jìn)程還有服務(wù)器進(jìn)程 Server Process、用戶進(jìn)程 User Process 等等
從 SGA 開始
SGA 里有 Shared pool 共享池、Database Buffer Cache 數(shù)據(jù)庫(kù)高速緩存區(qū)、Redo Log Buffer Cache 重做日志緩存區(qū)
Java Pool、Stream Pool 以及 Large Pool。當(dāng)然還有其他的一些內(nèi)存區(qū)域。
Shared pool 共享池里又主要由兩個(gè)部分組成
1、Library Cache 庫(kù)緩存
顧名思義庫(kù)是存放東西的,存放的是最近執(zhí)行過(guò)的 SQL 語(yǔ)句信息以及 PL/SQL 過(guò)程,其中有解析過(guò)程,執(zhí)行計(jì)劃和執(zhí)行結(jié)果。
2、Data Dictionaray Cache 數(shù)據(jù)字典緩存
數(shù)據(jù)字典就是存放數(shù)據(jù)文件、表、列以及其他一些定義性的信息還有權(quán)限信息等。
Database Buffer Cache 數(shù)據(jù)庫(kù)高速緩存
這個(gè)區(qū)域是從數(shù)據(jù)文件中讀取最近訪問(wèn)的緩存塊,對(duì)于數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢以及更改等有很大的性能提升
這里面的緩存塊由以下幾種
1、正在被使用的緩存塊,一般是經(jīng)常訪問(wèn)的緩存塊,這種不會(huì)被寫入數(shù)據(jù)文件中
2、干凈的緩存塊,用過(guò)了但是被 DBWR 進(jìn)程寫入了數(shù)據(jù)文件
3、空的,完全未使用過(guò)的緩存塊 作用等同于干凈的緩存塊等待被寫入數(shù)據(jù)
4、臟緩存塊,在這里面就是數(shù)據(jù)被更改過(guò)的緩存塊
Redo Log Buffer Cache 重做日志緩沖區(qū)
這個(gè)區(qū)域是用來(lái)記錄用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行的所有操作的信息,比如用戶更改了一條數(shù)據(jù),在這里就把修改的數(shù)據(jù)和位置記錄在重做日志緩沖區(qū)中然后由 LGWR 進(jìn)程寫入重做日志文件中,一般有兩個(gè)以上的重做日志文件然后循環(huán)寫入,比如第一個(gè)文件寫滿了就寫在第二個(gè)上,在歸檔模式下,切換重做日志文件時(shí)就把已滿的那個(gè)文件數(shù)據(jù)全部鏡像到歸檔日志文件下,相當(dāng)于再備份。
重要的后臺(tái)進(jìn)程
DBWR 數(shù)據(jù)庫(kù)寫進(jìn)程
在上面已經(jīng)見過(guò)這個(gè)進(jìn)程的作用,就是把數(shù)據(jù)庫(kù)高速緩存區(qū)的臟數(shù)據(jù)寫入數(shù)據(jù)文件中,永久保存
觸發(fā)條件
1、臟緩存區(qū)已滿,不得不寫
2、時(shí)間間隔已到,一般三秒寫一次
3、需要從數(shù)據(jù)文件緩存數(shù)據(jù)但無(wú)空閑數(shù)據(jù)塊時(shí)
4、檢查點(diǎn)發(fā)生時(shí)即 CKPT 觸發(fā)時(shí)
5、表空間設(shè)置為只讀或者脫機(jī)備份時(shí)
6、出現(xiàn)臨時(shí)表的更改,如刪除等
LGWR 重做日志寫進(jìn)程 將重做日志緩存區(qū)的操作記錄寫到重做日志文件中
觸發(fā)條件
1、時(shí)間間隔已到
2、DBWR 進(jìn)程寫之前
3、緩存滿 1MB 或者三分之一滿時(shí)
4、用戶進(jìn)行 COMMIT 提交操作時(shí)
CKPT 檢查點(diǎn)進(jìn)程 通知 DBWR 進(jìn)程干活,將干完之后的記錄比如系統(tǒng)更改號(hào) SCN 寫入數(shù)據(jù)文件頭部以及控制文件中
同步數(shù)據(jù)文件,控制文件以及重做日志文件
觸發(fā)條件
1、重做日志切換時(shí)
2、正常事務(wù)處理完成時(shí)如 DBWR 和 LGWR 干完活
3、系統(tǒng)關(guān)閉時(shí)
PMON 進(jìn)程監(jiān)視進(jìn)程 監(jiān)視其他進(jìn)程,清除失敗的用戶進(jìn)程并釋放當(dāng)時(shí)正在使用的資源
SMON 系統(tǒng)監(jiān)視進(jìn)程 在數(shù)據(jù)庫(kù)發(fā)生無(wú)法控制的崩潰時(shí),如斷電。會(huì)自動(dòng)應(yīng)用重做日志文件的紀(jì)錄進(jìn)行實(shí)例恢復(fù)工作
ARCH 系統(tǒng)開啟歸檔下才會(huì)有的進(jìn)程,將重做日志文件切換后的數(shù)據(jù)內(nèi)容復(fù)制到歸檔日志文件中去
數(shù)據(jù)庫(kù)結(jié)構(gòu)
1、物理存儲(chǔ)結(jié)構(gòu)(文件結(jié)構(gòu))
2、邏輯存儲(chǔ)結(jié)構(gòu)
物理存儲(chǔ)結(jié)構(gòu)
數(shù)據(jù)庫(kù)中物理上是存放在物理文件中
1、數(shù)據(jù)文件 存放數(shù)據(jù)庫(kù)的系統(tǒng)表信息以及所有的數(shù)據(jù)信息
2、控制文件 參數(shù)文件 Init.ora 里面記錄了控制文件的位置,控制文件中包含數(shù)據(jù)庫(kù)的名字,檢查點(diǎn)信息,數(shù)據(jù)庫(kù)創(chuàng)建的內(nèi)部時(shí)間戳以及所有的文件信息 備份信息等
3、重做日志文件 對(duì)數(shù)據(jù)庫(kù)的所有操作都將記錄在這個(gè)文件中
4、歸檔日志文件 重做日志文件的備份文件
5、參數(shù)文件 在啟動(dòng)實(shí)例時(shí),根據(jù)參數(shù)文件中的配置為 SGA 分配內(nèi)存和啟動(dòng)后臺(tái)進(jìn)程
6、口令文件 存放用戶信息,進(jìn)行超級(jí)用戶 sys 的身份驗(yàn)證
邏輯存儲(chǔ)結(jié)構(gòu)
在邏輯上以表空間、段、區(qū)、塊層層往下剝離
一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù),但一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)表空間
表空間在邏輯上是有多個(gè)段組成的,在物理上是由一個(gè)或者以上的數(shù)據(jù)文件組成的
一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間
段是可以不連續(xù)的所以也意味著段可以跨數(shù)據(jù)文件
區(qū),連續(xù)的數(shù)據(jù)塊組成的一個(gè)區(qū)域
塊,數(shù)據(jù)塊,Oracle 中最小的 I / O 單位
感謝各位的閱讀,以上就是“Oracle 基礎(chǔ)知識(shí)點(diǎn)總結(jié)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) Oracle 基礎(chǔ)知識(shí)點(diǎn)總結(jié)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!