Oracle数据库体系结构
文章目錄
- Oracle系統(tǒng)體系結(jié)構(gòu)由三個(gè)部分組成:**實(shí)例、物理結(jié)構(gòu)和邏輯結(jié)構(gòu)**
- 實(shí)例和物理結(jié)構(gòu)(數(shù)據(jù)庫)組成了Oracle服務(wù)器。
- 一、實(shí)例
- 1.1 內(nèi)存結(jié)構(gòu)
- 1.1.1 系統(tǒng)全局區(qū)(SGA)
- 1.1.1.1 共享池(共享儲(chǔ)存區(qū))
- 1.1.1.2 共享池——庫緩沖區(qū)
- 1.1.1.3 共享池——數(shù)據(jù)字典緩沖區(qū)
- 1.1.1.4 數(shù)據(jù)塊高速緩沖區(qū)
- 1.1.1.5 重做日志緩沖區(qū)
- 1.1.1.6 大型池
- 1.1.1.7 Java池
- 1.1.2 程序全局區(qū)(PGA)
- 1.2 進(jìn)程結(jié)構(gòu)
- 1.2.1 用戶進(jìn)程
- 1.2.2 服務(wù)器進(jìn)程
- 1.2.3 后臺(tái)進(jìn)程
- 1.2.3.1 數(shù)據(jù)庫復(fù)寫器(DBWn)
- 1.2.3.2 日志復(fù)寫器(LGWR)
- 1.2.3.3 系統(tǒng)監(jiān)控進(jìn)程(SMON)
- 1.2.3.4 進(jìn)程監(jiān)控器(PMON)
- 1.2.3.5 檢查點(diǎn)(CKPT)
- 1.2.3.6 歸檔進(jìn)程(ARCn)(可選)
- 二、物理結(jié)構(gòu)
- 2.1 數(shù)據(jù)文件
- 2.2 重做日志文件
- 2.3 控制文件
- 三、邏輯結(jié)構(gòu)
Oracle系統(tǒng)體系結(jié)構(gòu)由三個(gè)部分組成:實(shí)例、物理結(jié)構(gòu)和邏輯結(jié)構(gòu)
實(shí)例和物理結(jié)構(gòu)(數(shù)據(jù)庫)組成了Oracle服務(wù)器。
一、實(shí)例
也成為服務(wù)器Server,是用來訪問一個(gè)數(shù)據(jù)庫文件集的一個(gè)存儲(chǔ)結(jié)構(gòu)以及后臺(tái)進(jìn)程的集合??偸谴蜷_一個(gè)且僅打開一個(gè)數(shù)據(jù)庫,一個(gè)數(shù)據(jù)庫可以被多個(gè)實(shí)例訪問。
由內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)組成。
1.1 內(nèi)存結(jié)構(gòu)
內(nèi)存結(jié)構(gòu)由系統(tǒng)全局區(qū)和程序全局區(qū)構(gòu)成
1.1.1 系統(tǒng)全局區(qū)(SGA)
SGA(System Global Area):由所有服務(wù)進(jìn)程、后臺(tái)進(jìn)程共享。
在實(shí)例啟動(dòng)時(shí)分配,時(shí)一組為系統(tǒng)分配的共享內(nèi)存結(jié)構(gòu)。是占用內(nèi)存最大的一個(gè)區(qū)域,也是影響數(shù)據(jù)庫性能的重要因素。
由共享池、數(shù)據(jù)塊高速緩沖區(qū)、重做日志緩沖區(qū)組成,另外有兩個(gè)可選的內(nèi)存結(jié)構(gòu):大型池、JAVA池。
1.1.1.1 共享池(共享儲(chǔ)存區(qū))
用來儲(chǔ)存最近最多執(zhí)行的SQL語句和最近最多使用的數(shù)據(jù)定義
主要由庫緩沖區(qū)和數(shù)據(jù)字典緩沖區(qū)組成
1.1.1.2 共享池——庫緩沖區(qū)
儲(chǔ)存最近使用的SQL和PL/SQL語句信息。
它能夠使普遍使用的語句能被共享。
由兩種結(jié)構(gòu)組成,其各自的大小由共享池內(nèi)部指定:
- 共享SQL區(qū)域
- 共享PL/SQL區(qū)域
1.1.1.3 共享池——數(shù)據(jù)字典緩沖區(qū)
使數(shù)據(jù)庫里最經(jīng)常使用的對(duì)象定義的集合。
包括數(shù)據(jù)文件名、表、索引、列、用戶權(quán)限和其他數(shù)據(jù)庫對(duì)象等信息。數(shù)據(jù)庫需要這些信息時(shí),將查找數(shù)據(jù)字典獲取關(guān)聯(lián)對(duì)象信息。
緩存數(shù)據(jù)字典信息在內(nèi)存區(qū)能提高查詢數(shù)據(jù)響應(yīng)時(shí)間。
1.1.1.4 數(shù)據(jù)塊高速緩沖區(qū)
儲(chǔ)存以前從數(shù)據(jù)文件中取出過的數(shù)據(jù)塊的拷貝信息。
通常只緩存數(shù)據(jù)庫大小的1%~2%。使用LRU(最近最少使用)算法來管理可用空間。
1.1.1.5 重做日志緩沖區(qū)
記錄數(shù)據(jù)塊的所有變化。重做項(xiàng)會(huì)被周期性分批寫到重做日志文件中,以便再數(shù)據(jù)塊恢復(fù)過程中用于恢復(fù)操作。
1.1.1.6 大型池
只配置在共享服務(wù)器環(huán)境中,能減輕共享池的負(fù)擔(dān)。
1.1.1.7 Java池
目的是為JAVA命令提供語法分析,如果安裝并使用JAVA是必須的。
1.1.2 程序全局區(qū)(PGA)
PGA(Program Global Area):由每個(gè)服務(wù)進(jìn)程、后臺(tái)進(jìn)程專有;每個(gè)進(jìn)程都有一個(gè)PGA。
當(dāng)客戶進(jìn)程訪問oracle服務(wù)器時(shí),會(huì)在oracle服務(wù)器端為用戶進(jìn)程分配相應(yīng)的服務(wù)進(jìn)程,并且為該服務(wù)進(jìn)程分配相應(yīng)的內(nèi)存空間來存放其數(shù)據(jù)和控制信息,每一個(gè)后臺(tái)進(jìn)程也需要為其分配專用的存儲(chǔ)空間。也就是PGA
1.2 進(jìn)程結(jié)構(gòu)
分別為用戶進(jìn)程、服務(wù)器進(jìn)程和后臺(tái)進(jìn)程。
1.2.1 用戶進(jìn)程
用戶進(jìn)程是要求Oracle服務(wù)器交互的一種進(jìn)程。
當(dāng)數(shù)據(jù)庫用戶要求連接到Oracle服務(wù)器時(shí)啟動(dòng),不直接和Oracle服務(wù)器連接。
1.2.2 服務(wù)器進(jìn)程
連接ORacle實(shí)例,當(dāng)用戶建立一個(gè)會(huì)話時(shí)開始啟動(dòng)。
連接和會(huì)話是兩個(gè)不同的概念。 連接是用戶進(jìn)程到實(shí)例之間的一條物理路徑;會(huì)話是實(shí)例中存在的一個(gè)邏輯實(shí)體。一條連接上可以建立0個(gè),1個(gè)或多個(gè)會(huì)話,而且各個(gè)會(huì)話單獨(dú)且獨(dú)立的。
使用connect和disconnect創(chuàng)建或結(jié)束會(huì)話
服務(wù)器進(jìn)程就是代表客戶會(huì)話完成工作的進(jìn)程。幾乎所有的工作都是由它們來做的,因此占用系統(tǒng)cpu的時(shí)間最多。
任務(wù):
- 對(duì)sql進(jìn)行解析和執(zhí)行
- 如果所需的數(shù)據(jù)不在sga中,則server process會(huì)去磁盤上將其讀到sga的database_buffer_cache中。
- 把結(jié)果返回給應(yīng)用程序
可用專用服務(wù)器模式或共享服務(wù)器模式創(chuàng)建會(huì)話。
1.2.3 后臺(tái)進(jìn)程
若干個(gè)常駐內(nèi)存的操作系統(tǒng)進(jìn)程,在進(jìn)程啟動(dòng)時(shí)分配。
數(shù)據(jù)庫的物理結(jié)構(gòu)與內(nèi)存結(jié)構(gòu)之間的交互通過這些進(jìn)程完成。
1.2.3.1 數(shù)據(jù)庫復(fù)寫器(DBWn)
負(fù)責(zé)管理緩沖儲(chǔ)存區(qū)。主要任務(wù)是將緩沖區(qū)的臟數(shù)據(jù)寫入磁盤。
1.2.3.2 日志復(fù)寫器(LGWR)
負(fù)責(zé)管理日志緩沖區(qū),將上次寫入磁盤以來的全部日志緩沖區(qū)寫入磁盤上的日志文件。
1.2.3.3 系統(tǒng)監(jiān)控進(jìn)程(SMON)
該實(shí)例啟動(dòng)時(shí),執(zhí)行實(shí)例恢復(fù),還負(fù)責(zé)清理不再使用的臨時(shí)段。
1.2.3.4 進(jìn)程監(jiān)控器(PMON)
該進(jìn)程在用戶進(jìn)程出現(xiàn)故障時(shí)執(zhí)行進(jìn)程恢復(fù),負(fù)責(zé)清理內(nèi)存儲(chǔ)區(qū)和釋放該進(jìn)程所使用的資源。
1.2.3.5 檢查點(diǎn)(CKPT)
1.2.3.6 歸檔進(jìn)程(ARCn)(可選)
當(dāng)ArchiveLog模式被設(shè)置時(shí),自動(dòng)歸檔聯(lián)機(jī)重做日志文件,保存所有數(shù)據(jù)庫變化。
二、物理結(jié)構(gòu)
包括了數(shù)據(jù)文件、日志文件和控制文件。
2.1 數(shù)據(jù)文件
每個(gè)Oracle數(shù)據(jù)庫有一個(gè)或多個(gè)物理的數(shù)據(jù)文件。一個(gè)數(shù)據(jù)庫的數(shù)據(jù)文件包括全部數(shù)據(jù)庫數(shù)據(jù)。邏輯結(jié)構(gòu)中的一個(gè)表空間有一個(gè)或多個(gè)數(shù)據(jù)文件組成。
2.2 重做日志文件
每個(gè)數(shù)據(jù)庫有兩個(gè)或多個(gè)日志文件的組。每個(gè)日志文件組用于收集數(shù)據(jù)庫日志。
日志的主要功能是記錄對(duì)數(shù)據(jù)所做的修改,用于保護(hù)數(shù)據(jù)庫以防止故障。
2.3 控制文件
每一Oracle數(shù)據(jù)庫有一個(gè)控制文件。用于記錄數(shù)據(jù)庫的物理結(jié)構(gòu)
三、邏輯結(jié)構(gòu)
描述了數(shù)據(jù)庫的物理空間怎樣運(yùn)用,是一種層次結(jié)構(gòu)。包括表空間、段、片區(qū)、快。
總結(jié)
以上是生活随笔為你收集整理的Oracle数据库体系结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商务应用课程知识整理 第四章-搜索引
- 下一篇: linux cmake编译源码,linu