SGA

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

組成

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

重要特性

一、SGA的構成——數據和控制信息,咱們下面會詳細介紹。
二、SGA是共享的,即當有多個用戶同時登陸了這個實例,SGA中的信息能夠被它們同時訪問(當涉及到互斥的問題時,由 latchsequence控制)。
三、一個SGA只服務於一個實例,也就是說,當一臺機器上有多個實例運行時,每一個實例都有一個本身的SGA儘管SGA來自於OS的 共享內存區,但實例之間不能相互訪問對方的SGA區。

主要包括

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;
Libray Cache緩存被執行的SQL和PL/SQL的相關信息,即存放SQL語句的文本,分析後的代碼及執行計劃。實現經常使用語句的共享,使用LRU算法進行管理,由如下兩個結構構成:Shared SQL area、Shared PL/SQL area;
Data Dictionary Cache 緩存被使用的數據庫定義,即存放有關表,列和其它對象定義及權限。它包括關於 數據庫文件、表、索引、列、用戶、權限以及其它 數據庫對象的信息。在 語法分析階段,Server Process訪問數據字典中的信息以解析對象名和對存取操做進行驗證。 數據字典信息緩存在內存中有助於縮短響應時間。
相關文章
相關標籤/搜索