oracle 12c的體系結構
5個重要組成部分
1.連線資料庫例項的服務:為Oracle系統的體系結構中協同工作的方式;
2.伺服器程序;
3.檔案系統管理;
4.記憶體區域管理:尤其是系統全域性區(SGA,SystemGlobal Area)的特點和作用;
5.後臺程序
3個重點體系結構
1.記憶體結構,程序結構,儲存結構
2.
3.通過上圖,可以看出每一個Oracle伺服器都會包含兩個主要組成部分,即Oracle例項,Oracle資料庫(物理體系)
4.Oracle伺服器,Oracle例項(instance),Oracle資料庫(database)的關係
1.如將Oracle比作一輛汽車,那麼例項就像汽車的發動機(核心),在啟動
2.例項與資料庫的關係是資料庫可以由多個例項裝載和開啟,而例項可以在任何時間點上裝載,開啟一個數據庫;
Oracle例項體系
1.資料庫啟動,會自動分配SGA(系統全域性區)記憶體,構成Oracle的記憶體結構,而後再啟動若干個常駐記憶體的作業系統程序,已構成Oracel的程序結構,記憶體區域與後臺程序就構成了一個Oracle例項;
2.每個執行的Oracle資料庫都對應一個Oracle例項(或者稱為例程)。每個例項啟動時都會分配各自的記憶體結構與程序結構;
3.Oracle例項標記:在作業系統中如果存在多個Oracle
記憶體結構
1.記憶體儲存了資料字典資訊,關於物件,邏輯結構,許可權等元資料,緩衝的應用資料,SQL語句,PL/SQL和Java程式資料,以及事務等資訊。除了這些,還包含軟體程式碼區和程式程式碼區(PGA)
1.
2.共享區
(1).包括高速緩衝區,和資料字典緩衝區,資料庫高速緩衝區又包括共享sql區,私有sql區,共享PL/SQL區,及控制結構區
1).私有sql區:用來存放sql語句執行時與之有關的每一個會話的私有資料。在專用伺服器中,私有
2).共享SQL區:使用者執行sql時,Oracle會將最近執行的sql語句的文字,編譯後的語法分析樹和執行計劃存入共享區。而將sql語句中的變數值存入私有Sql區。當伺服器再次執行相同的sql語句時,伺服器程序將不再進行語句分析,而是直接執行共享sql區內已經存在的內容;
3).共享PL/SQL區:Oracel執行一個PL/SQL語句前,會先將程式單元放入共享PL/SQL區,而程式單元內的SQL語句將被放到SQL區中,當需要再次執行相同的程式單元時,直接從記憶體中呼叫,不用再次訪問磁碟;
4).結構控制區:供例項內部使用的一段記憶體區,存放了鎖方面的資訊;
3.資料庫緩衝區
(1).該區是SGA中的一個高速緩衝區域,用來儲存最近從資料檔案中讀取的資料塊,表,索引資料庫。當用戶處理查詢時,伺服器程序會先從資料庫緩衝區查詢所需要的資料庫,緩衝區中沒有時才會訪問磁碟資料;
4.重做日誌緩衝區
(1).當用戶通過sql語句更改資料後,伺服器程序會在重做日誌緩衝區中記錄這些修改。資料庫發生意外後,可通過此記錄恢復資料
5.大池
(1).可選的記憶體區。大池提供額外的記憶體,供一些消耗大量記憶體的操作使用;
6.Java池
(1).該處存放了Java文字,語法分析等資訊。如果要安裝Java VM就必須啟用Java池;
7.Streams池
(1).該區域是10g新新增的。它用來存放資訊。它存放的內容是共享的。利用該池管理資訊比原來捕獲和管理訊息更容易;
8.資料字典緩衝區
(1).它包含了資料庫的結構,使用者資訊和資料庫的表,檢視等資訊;還有所有表和檢視的名詞,以及許可權等資訊;
9.程式全域性區(PGA)
(1).程式全域性區:包括會話資訊,堆疊空間,排序區以及遊標狀態;
1).會話資訊存放的是會話的許可權,角色,會話效能統計等資訊;
2).堆疊空間記憶體放的是變數,陣列和屬於會話的其他資訊;
3).排序區則是用於排序的一段專用空間;
4).遊標狀態存放的則是當前使用的各種遊標的處理階段;
(2).當用戶程序連線到Oracle後,伺服器會建立一個會話,同時分配一個PGA區,該區由一個使用者程序使用,不能共享;
1).對專用伺服器(一個數據庫連線對應一個專用伺服器程序),PGA儲存堆疊空間資訊,會話資訊,遊標狀態和排序區。
2).對共享伺服器,PGA僅儲存堆疊空間資訊,而會話資訊,遊標狀態,排序區儲存在SGA中。
3).PGA結構如圖:
A.
3種類型的程序
1.使用者程序,伺服器程序和後臺程序,使用者程序與伺服器程序的關係,如圖
(1).
(2).當用戶需要在Oracle進行操作時,首先要建立連線,從而建立使用者程序與伺服器程序之間的通訊通道。當用戶與伺服器建立了連線之後,就會通過一個會話來表示,不同會話間的操作彼此獨立;
(3).Oracle的後臺程序與例項同時啟動,主要作用是維持資料庫的物理結構和記憶體結構,後臺程序的結構如下:
1.
2.上圖主要的後臺程序作用如下:
(1).系統監控程序(SMON):資料庫啟動時,SMON會使用聯機重做日誌檔案恢復崩潰的例項;
(2).程序監控程序(PMON):主要是監視使用者程序的執行;當用戶程序失敗時,清除使用者程序和程序所佔用的資源;
(3).檢查點程序(CKPT):用來控制資料檔案,控制檔案和重做日誌檔案之間的協調同步;
(4).資料庫寫程序(DBWO):此程序負責管理資料庫緩衝區以及資料字典緩衝區;
(5).日誌寫程序(LOWR):負責重做日誌緩衝區的內容寫入聯機重做日誌檔案;
(6).歸檔程序(ARCO):將寫滿的重做日誌檔案轉存到指定的裝置上,以保證先前的重做日誌檔案不至於被覆蓋;
(7).恢復程序(RECO):用於恢復分散式資料庫環境中失敗的事務;
(8).作業佇列程序(SNPn):可以完成一些應用程式的週期性執行工作。
(9).鎖程序(LCKn):用於鎖定資料庫物件,不被資料庫其他程序更改。
Oracle物理體系
1.該體系就是資料庫的物理體系,就是存放在磁碟上的結構檔案;在資料庫中的所有資料,都儲存在這些物理檔案中;
2.控制檔案(Control file):控制檔案用於控制資料庫的物理結構。它記錄了資料庫中所有檔案的控制資訊;
3.資料檔案(Data File):每個Oracle資料庫都有一個或多個物理的資料檔案。一個數據庫的資料檔案包含全部資料庫資料。
4.重做日誌檔案(Log File):Oracle用重做日誌檔案來儲存所有資料庫事務的日誌;
5.引數檔案(Parameter File):儲存Oracle配置有關的資訊,一般有如下3類引數檔案:
(1).初始化引數檔案:用於在資料庫啟動例項時配置資料庫,該檔案主要設定資料庫例項名稱,主要使用檔案的位置,例項所需要的記憶體區域大小等;
(2).配置引數檔案:在資料對應多個例項的時候才會存在,如果一個數據庫只對應一個例項則不會產生此檔案。此檔案一般被命名為config.org,該檔案一般由初始化引數檔案呼叫;
(3).二進位制引數檔案:會存在兩種引數檔案,一種是pfile,此檔案是基於文字格式化的引數檔案,含有資料庫的配置引數。另一種Server Parameter File,伺服器引數檔案,此檔案是基於二進位制格式的引數檔案,含有資料庫及例程的引數和數值;