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