SGA

SGA

系統全局區又稱SGA (System Global Area)是Oracle Instance的 基本組成部分,在實例啟動時分配。是一組包含一個Oracle實例的數據和控制信息的共享記憶體結構。主要是用於存儲資料庫信息的記憶體區,該信息為資料庫進程所共享(PGA不能共享的)。它包含Oracle 伺服器的數據和控制信息,它是在Oracle伺服器所駐留的計算機的實際記憶體中得以分配,如果實際記憶體不夠再往虛擬記憶體中寫。

組成

SGA主要由數據高速緩衝區(Database Buffer Cache)、共享池(Shared Pool)、重做日誌緩衝區(Redo Log Buffer)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)和其他結構(如固定SGA、鎖管理等)組成。

重要特性

1、SGA的構成——數據和控制信息,我們下面會詳細介紹。

2、SGA是共享的,即當有多個用戶同時登錄了這個實例,SGA中的信息可以被它們同時訪問(當涉及到互斥的問題時,由latch和sequence控制)。

3、一個SGA只服務於一個實例,也就是說,當一台機器上有多個實例運行時,每個實例都有一個自己的SGA儘管SGA來自於OS的共享記憶體區,但實例之間不能相互訪問對方的SGA區。

主要包括

SGASGA

1.資料庫高速緩衝(the data buffer cache),

2.重做日誌緩衝(the redo log buffer)

3.共享池(the shared pool),包括庫高速快取(the Library cache)和數據字典快取(the data dictionary cache)以及其它各方面的信息。

1.數據高速緩衝區(Data Buffer Cache)

在數據高速緩衝區中存放著Oracle系統使用過的數據塊(即用戶的高速緩衝區),當把數據寫入資料庫時,它以數據塊為單位進行讀寫,當數據高速緩衝區填滿時,則系統自動去掉一些不常被用戶訪問的數據。如果用戶要查的數據不在數據高速緩衝區時,Oracle自動從磁碟中去讀取。數據高速緩衝區包括三個類型的區:

1) 髒數據區(Dirty Buffers):包含有已經改變過並需要寫回數據檔案的數據塊。

2) 自由區(Free Buffers):沒有包含任何數據並可以再寫入的區,Oracle可以從數據檔案讀數據塊該區。

3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來用的區。

2.Redo Log Buffer Cache快取對於數據塊的所有修改。

主要用於恢復其中的每一項修改記錄都被稱為redo 條目。利用Redo條目的信息可以重做修改。

3. Shared Pool用於快取被執行的SQL語句和被使用的數據定義。

它主要由兩個記憶體結構構成:Library cache和Data dictionary cache

修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

Library Cache快取被執行的SQL和PL/SQL的相關信息,即存放SQL語句的文本,分析後的代碼及執行計畫。實現常用語句的共享,使用LRU算法進行管理,由以下兩個結構構成:Shared SQL area、Shared PL/SQL area;

Data Dictionary Cache快取被使用的資料庫定義,即存放有關表、列和其它對象定義及許可權。它包括關於資料庫檔案、表、索引、列、用戶、許可權以及其它資料庫對象的信息。在語法分析階段,Server Process訪問數據字典中的信息以解析對象名和對存取操作進行驗證。數據字典信息快取在記憶體中有助於縮短回響時間。

相關搜尋

熱門詞條

聯絡我們