1. 程式人生 > >java程式設計師菜鳥進階(五)oracle基礎詳解(五)oracle資料庫體系架構詳解

java程式設計師菜鳥進階(五)oracle基礎詳解(五)oracle資料庫體系架構詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               


      在學習oracle中,體系結構是重中之重,一開始從巨集觀上掌握它的物理組成、檔案組成和各種檔案組成。掌握的越深入越好。在實際工作遇到疑難問題,其實都可以歸結到體系結構中來解釋。體系結構是對一個系統的框架描述。是設計一個系統的巨集觀工作。這好比建一棟大樓。你首先應該以圖紙的方式把整個大樓的體系架構描述出來。然後一點點的往裡面填充東西。下面我們先以一個圖解的方式對oracle體系結構有一個基本瞭解


                                 



    根據示圖,便於我們記憶,示圖分三部分組成,左側User Process、Server Process、PGA可以看做成Clinet端,上面的例項(Instance)和下面的資料(Database)及引數檔案(parameter file)、密碼檔案(password file)和歸檔日誌檔案(archived logfiles)組成Oracle Server,所以整個示圖可以理解成一個C/S架構。 Oracle Server由兩個實體組成:例項(instance)與資料庫(database)。這兩個實體是獨立的,不過連線在一起。在資料庫建立過程中,例項首先被建立,然後才建立資料庫。在典型的單例項環境中,例項與資料庫的關係是一對一的,一個例項連線一個數據庫,例項與資料庫也可以是多對一的關係,即不同計算機上的多個例項開啟共享磁碟系統上的一個公用資料庫。這種多對一關係被稱為實際應用群集(Real Application Clusters,RAC)RAC極大提高了資料庫的效能、容錯與可伸縮性(可能耗費更多的儲存空間)並且是oracle網格(grid)概念的必備部分。 

下面我們來詳細看一下oracle資料庫的體系架構

Oracle體系架構主要有兩大部分組成:資料庫例項(Instance)和資料庫檔案(database


資料庫例項

指資料庫伺服器的記憶體及相關處理程式,它是Oracle的心臟。與Oracle效能關係最大的是SGASystem Global Area,即系統全域性區活共享記憶體區),SGA包含三個部分:
    1、資料緩衝區,可避免重複讀取常用的資料;
    2、日誌緩衝區,提升了資料增刪改的速度,減少磁碟的讀寫而加快速度;

 

    3、共享池,使相同的SQL語句不再編譯,提升了SQL的執行速度。 


oracle資料庫例項的另一部分就是一些後臺程序了,他主要包括:


1.系統監控程序

2.程序監控

3.資料庫寫程序

4.日誌寫程序

5.檢驗點程序

6.其他程序


這些後臺程序合起來完成資料庫管理任務

在訪問資料庫的時候。器後臺先啟動例項。啟動例項前要先分配記憶體區。然後在啟動後臺程序。資料庫啟動過程中必須啟動上面的前五個程序。否則例項無法建立。

注意:在啟動oracle資料庫的時候。因為有些程序是在開機啟動項中自動啟動的。所以佔用了很大一部分記憶體。如果您電腦上還有一些其他佔用記憶體比較大的程式。在啟動oracle資料庫的時候有可能會因記憶體不足而啟動失敗。


Oracle伺服器

Oracle伺服器包括兩部分:資料庫例項和資料庫檔案。他們構成了也就是所謂的資料管理系統(DBMS)


                               


物理結構oracle的物理結構指的其實就是一些存在硬碟上的各種檔案。其最終目的就是儲存和獲取相關資料。這些存在硬碟上的檔案組成了oracle資料庫的物理結構


Oracle中主要包括三種檔案:

1.資料檔案

2.控制檔案

3.重做日誌檔案


引數檔案和密碼檔案:


引數檔案:定義了資料庫例項的特性,他是正文檔案

密碼檔案:授予使用者啟動和關閉資料庫的例項。主要有二進位制資料組成


Oracle資料庫的記憶體結構:SGAPGA


SGA:資料庫例項的一部分。資料庫例項的啟動會首先分配系統全域性區(SGA)


1.共享池:共享sqlpl/sql程式碼,即把解析的sql程式碼在這裡快取,PL/SQL不僅快取還共享。這樣大大提高了直接訪問磁盤獲得sql的速度。

1)庫快取記憶體:儲存最近使用過的sql語句。利用LRU(最近最少使用)演算法來管理快取。最近最少使用演算法是一種比較常用的演算法。在這裡當庫快取記憶體接近滿的時候。它會把快取中最近最少使用的資料清除快取中。加入新的快取sql

檢視共享池的大小使用引數shared_pool_size

Sql>show parameter shared_pool_size

設定共享池大小

Sql>alter system set  shared_pool_size=16M


注:在下面的的內容中。如果提到有關引數。如沒有特殊說明。設定和檢視引數值都是用以上類似方法。以後就不在重複了。並且這些引數必須是在以系統管理員system登陸時才能檢視和修改。用類似scott使用者是不能檢視和修改的。


Oracle提供了DB_CACHE_SIZE(資料庫大小)和DB_BLOCK_BUFFERS(資料庫塊個數)設定庫快取記憶體的大小,即為兩者的成績。


2)資料字典快取記憶體

儲存資料檔案、表、索引、列、使用者、許可權資訊和其他一些資料庫物件的定義。把相關的資料字典資訊放入快取來提高查詢的響應時間。其大小取決於共享池的大小。


2.資料庫快取記憶體

儲存了最近從資料檔案讀入的資料塊資訊或使用者更改後需要寫回資料庫的資料資訊。記憶體讀取比磁碟讀取的速度快的多。提高了訪問速度。這裡的存取也採用了LRU(最近最少使用)演算法。

Oracle資料庫引入了緩衝區顧問引數(Buffer cache advisory parameter)用於啟動和關閉統計資訊。這些資訊用於預測不同緩衝區的大小導致的不同行為特性。三種狀態:OFF:ON:READY

設定顧問快取為開啟狀態後。可以通過動態效能檢視:v$db_cache_advice檢視緩衝區的建議資訊

3.重做日誌快取

在執行insertupdate等操作後。資料發生了改變。這些變化的資料在寫入資料庫快取記憶體前會先寫入重做日誌緩衝區。包括變化之前的資料。可以通過初始化引數log_buffer檢視它的大小。此引數為靜態引數,不能修改。

4.大池和java

大型池(Large Pool)  

SGA中大型池是可選的緩衝區。它可以根據需要有管理權進行配置。它可以提供一個大的區以供象資料庫的備份與恢復等操作。

在以下幾種情形下會啟用:  

一,backup 和 restore 操作的時候  

二,當啟動UGA, I/O slaves的時候  

三,設定MTS伺服器的時候,使用者資訊的存放也使用到Large Pool

可以使用以下命令進行更改Large Pool的大小:  

ALTER SYSTEM SET Large_Pool_Size = 64m;

Java池用於編譯java語言編寫的指令。通過java_pool_size檢視和修改大小。大小由資料庫在SGA自動分配和管理。所以檢視的時候值為0

Oracle的連線和會話


連線 (connection)與會話 (session這兩個概念均與使用者程序 (user process)緊密相關,但二者又具有不同的含義。

連線 :使用者程序和 Oracle 例項間的通訊通道(communication pathway)。這個通訊通道是通過程序間的通訊機制(interprocess communication mechanisms)(在同一個計算機上執行使用者程序和 Oracle 程序)或網路軟體(network software)(當資料庫應用程式與 Oracle 伺服器執行在不同的計算機上時,就需要通過網路來通訊)建立的。

會話 :使用者通過使用者程序與 Oracle 例項建立的連線[此處連線與上文中的連線含義不同 ,主要指使用者和資料庫間的聯絡 ]。例如,當用戶啟動 SQL*Plus 時必須提供有效的使用者名稱和密碼,之後 Oracle 為此使用者建立一個會話。從使用者開始連線到使用者斷開連線(或退出資料庫應用程式)期間,會話一直持續。

Oracle 資料庫中的同一個使用者可以同時建立多個會話。例如,使用者名稱/密碼為的SCOTT/TIGER 使用者可以多次連線到同一個 Oracle 例項。

當系統沒有執行在共享服務模式下時,Oracle 為每個使用者會話建立一個服務程序(server process)。而當系統執行在共享服務模式下時,多個使用者會話可以共享同一個服務程序。


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述