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