1. Oracle整體架構(gòu)
Oracle整體架構(gòu)包含Oracle數(shù)據(jù)庫(kù)正常運(yùn)行的必需組件等。主要有實(shí)例(Instance),數(shù)據(jù)庫(kù)(Database)
1.1 實(shí)例(Instance)
數(shù)據(jù)庫(kù)實(shí)例是由服務(wù)器上的一組內(nèi)存結(jié)構(gòu)以及進(jìn)程組成。用來(lái)支撐、完成數(shù)據(jù)庫(kù)的正常運(yùn)行以及操作。
實(shí)例是可以獨(dú)立于數(shù)據(jù)庫(kù)存在的。其中實(shí)例包含了以下組件:
1.1.1 內(nèi)存
即服務(wù)器OS為當(dāng)前Instance分配的內(nèi)存區(qū)域。主要用來(lái)完成數(shù)據(jù)庫(kù)內(nèi)存的移動(dòng)和操作。內(nèi)存主要分為SGA(System Global Area) , PGA(Program or Process Global Area).
SGA是實(shí)例范圍內(nèi)共享的,包含共享池,數(shù)據(jù)緩沖,Redo緩沖等。共享池包含庫(kù)緩沖和字典緩沖等。
PGA為各個(gè)會(huì)話私有。
1.1.2 后臺(tái)進(jìn)程(Background Process)
實(shí)例創(chuàng)建和維護(hù)的一組后臺(tái)進(jìn)程,其作用是完成數(shù)據(jù)中的統(tǒng)一管理和監(jiān)控任務(wù)。進(jìn)程是共享的,不屬于某個(gè)或某些會(huì)話
1.1.3 服務(wù)進(jìn)程(Server Process)
實(shí)例為數(shù)據(jù)庫(kù)會(huì)話創(chuàng)建或分配,完成會(huì)話任務(wù)的Serve端服務(wù)進(jìn)程。其中在專用服務(wù)器模式和共享服務(wù)器模式下又有不同。
- 專用服務(wù)器模式: 該模式下,用戶和數(shù)據(jù)庫(kù)服務(wù)器建立會(huì)話,Instance會(huì)為本次會(huì)話創(chuàng)建一個(gè)服務(wù)進(jìn)程,用以完成此會(huì)話任務(wù)。
- 共享服務(wù)器模式下,Instance會(huì)維護(hù)一組服務(wù)進(jìn)程,Instance調(diào)度進(jìn)程會(huì)將會(huì)話放入共享任務(wù)的隊(duì)列中。該模式下所有的會(huì)話是共享一組服務(wù)進(jìn)程的,也是一種池化思想。
1.2 數(shù)據(jù)庫(kù)(DataBase)
數(shù)據(jù)庫(kù)是由服務(wù)器上的一組磁盤文件組成,存儲(chǔ)著數(shù)據(jù)庫(kù)相關(guān)的管理信息和用戶數(shù)據(jù),保證數(shù)據(jù)庫(kù)的正常運(yùn)轉(zhuǎn)和用戶數(shù)據(jù)的不丟失。數(shù)據(jù)庫(kù)及其文件可以獨(dú)立于Instance存在。
數(shù)據(jù)庫(kù)中包含了許多類型的文件,主要有參數(shù)文件(Parameter File)、控制文件(Control File)、數(shù)據(jù)文件(Data File)、回滾文件(Undo File)、臨時(shí)文件(Temp File)、重做日志文件(Redo Log File)、歸檔日志文件(Archive Log File)、警告日志文件(Alert Log File)、跟蹤文件(Trace File)等
下面是一個(gè)比較完整的Oracle架構(gòu)圖
2. Oracle內(nèi)存架構(gòu)
內(nèi)存架構(gòu)主要是說(shuō)Oracle實(shí)例內(nèi)存管理和使用相關(guān)的邏輯設(shè)計(jì)與實(shí)現(xiàn)等。這里我們概略地說(shuō)一下SGA和PGA,讓大家有一個(gè)粗略的概念。
2.1 SGA(System Global Area)系統(tǒng)全局區(qū)
數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)時(shí)創(chuàng)建的一個(gè)共享內(nèi)存區(qū)域。主要由共享池、數(shù)據(jù)緩沖、重做日志緩沖等諸多區(qū)域組成。
共享池是數(shù)據(jù)庫(kù)實(shí)例中最重要、最復(fù)雜的共享內(nèi)存區(qū)域,里面存儲(chǔ)著數(shù)據(jù)庫(kù)最重要的結(jié)構(gòu)和信息。
數(shù)據(jù)緩沖做為用戶數(shù)據(jù)的緩存區(qū),在系統(tǒng)共享內(nèi)存中暫存數(shù)據(jù)庫(kù)的數(shù)據(jù)塊,其實(shí)這塊的設(shè)計(jì)是為了提高數(shù)據(jù)庫(kù)的讀寫性能。
重做日志緩沖作為日志數(shù)據(jù)的緩沖區(qū),在系統(tǒng)共享內(nèi)存中暫存數(shù)據(jù)庫(kù)重做日志數(shù)據(jù),可提高日志數(shù)據(jù)的讀寫性能。
2.2 PGA (Program Global Area) 程序全局區(qū)
服務(wù)進(jìn)程存儲(chǔ)數(shù)據(jù)以及控制信息,以及完成相關(guān)任務(wù)的內(nèi)存區(qū)域。相對(duì)于其他區(qū)域來(lái)說(shuō),該區(qū)域?yàn)樗接袇^(qū)域。程序全局區(qū)域分為包含Stack Space、HashArea、UGA等。
- 共享服務(wù)器模式下,多個(gè)客戶端用戶共享服務(wù)進(jìn)程,UGA被挪到了Large pool,PGA中只有stack space、hash area、bitmap merge area等。
- 專用服務(wù)器模式下,PGA包括 SQL工作區(qū),Session memory,Private SQL Area 等
會(huì)話區(qū)(User Global Area UGA),為會(huì)話分配的內(nèi)存區(qū)域,用于存儲(chǔ)各種會(huì)話變量,例如會(huì)話登錄信息以及會(huì)話需要的其他各種信息等。
SQL 工作區(qū)是為服務(wù)進(jìn)程進(jìn)行各種內(nèi)存操作分配的PGA私有內(nèi)存。比如Sort Area(排序區(qū))用于數(shù)據(jù)排序功能(ORDER BY , GROUP BY 等)
3. Oracle存儲(chǔ)架構(gòu)
Oracle數(shù)據(jù)庫(kù)最終還是使用磁盤作為存儲(chǔ)媒介,針對(duì)Oracle數(shù)據(jù)庫(kù)的存儲(chǔ)組織、分配、管理等,我們介紹一下(塊)block、(區(qū)間)extent、(段)segment、(表空間)tableSpace.
下圖為個(gè)存儲(chǔ)單元的關(guān)系示意圖。
3.1 Block
Block是Oracle數(shù)據(jù)庫(kù)讀寫的最小單元,Block size是系統(tǒng)層面塊大小整數(shù)倍。2KB、4KB.....
block 示意圖
- Header中包含塊的一些通用信息,block的地址,segment類型等
- Table dictionary 記錄了這個(gè)塊里面含有那些rows
- Row dictionary 包含了rows(數(shù)據(jù)行)的一些信息
3.2 Extent(區(qū)間)
區(qū)間是關(guān)于存儲(chǔ)空間的一個(gè)邏輯單位,由多個(gè)連續(xù)的塊組成,也是Oracle存儲(chǔ)空間分配的最小單元,若某個(gè)數(shù)據(jù)庫(kù)對(duì)象需要存儲(chǔ)空間時(shí),Oracle至少要為其分配一個(gè)區(qū)間。
- 區(qū)間在段(Segment)被創(chuàng)建或段空間擴(kuò)展時(shí)被分配。
- 當(dāng)段被清除(drop)時(shí),區(qū)間所占用的存儲(chǔ)空間會(huì)被釋放,會(huì)被系統(tǒng)中其他對(duì)象所使用
3.3 Segment(段)
段是由一組區(qū)間組成,包含了表空間內(nèi)特定邏輯存儲(chǔ)結(jié)構(gòu)的所有數(shù)據(jù)。針對(duì)每個(gè)表,Oracle分配一個(gè)或者多個(gè)區(qū)間形成該表的數(shù)據(jù)段(data segment),對(duì)于每一個(gè)索引,Oracle分配一個(gè)或者給多個(gè)區(qū)間組成索引段(index segment).
- 非分區(qū)表和非分區(qū)索引分別對(duì)應(yīng)一個(gè)段,分區(qū)表和分區(qū)索引的每個(gè)分區(qū)或子分區(qū)對(duì)應(yīng)一個(gè)段。
- 段是存儲(chǔ)數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)的實(shí)體,是存放數(shù)據(jù)的真正邏輯結(jié)構(gòu)和單元。
- 段可分為數(shù)據(jù)段(Data segment)、索引段(Index segment)、臨時(shí)段(Temporary segment)、回滾段(Rollback segment)等。
3.4 TableSpace(表空間)
Oracle數(shù)據(jù)庫(kù)中最大的存儲(chǔ)空間相關(guān)的邏輯概念和容器,存儲(chǔ)系統(tǒng)和用戶數(shù)據(jù)的段都是在表空間中分配的。表空間是共享資源,不同用戶或段可以存儲(chǔ)在同一個(gè)表空間,也可以存儲(chǔ)在不同的表空間中。
- Oracle將數(shù)據(jù)邏輯存儲(chǔ)在表空間中,物理存儲(chǔ)則在與表空間對(duì)應(yīng)關(guān)聯(lián)的數(shù)據(jù)文件中。
- Oracle數(shù)據(jù)庫(kù)有一個(gè)或者多個(gè)表空間的邏輯存儲(chǔ)單元組成,這些表空間共同存儲(chǔ)所有的數(shù)據(jù)。
- Oracle中的每一個(gè)表空間有一個(gè)或者多個(gè)數(shù)據(jù)文件(data file)組成,這些數(shù)據(jù)文件與運(yùn)行Oracle的系統(tǒng)的屋里存儲(chǔ)結(jié)構(gòu)相匹配。
- 表空間分為數(shù)據(jù)表空間(Data Tablespace)、臨時(shí)表空間(Temporary Tablespace)、回滾表空間(Undo Tablespace)。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85082 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
2966瀏覽量
73812 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3752瀏覽量
64233 -
Oracle
+關(guān)注
關(guān)注
2文章
286瀏覽量
35086
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論