Oracle 內存結構(Memory Structure)

Oracle的內存結構包括兩個部分:System Global Area(SGA)和Program Global Area(PGA)。

SGA:當一個實例啓動的時候分配(allocated),是一個實例的基本組成部分。

PGA:當一個Server Process啓動的時候分配。Server Process上面已經講到。 

Memory -> SGA

SGA是動態的,可以通過SGA_MAX_SIZE參數來設置大小。SGA的增大和縮小有一個基本的單位granule。

在Sql plus我們可以查看SGA分配和granule。

SQL> show sga 

SQL> select component,granule_size from

  2  v$sga_dynamic_components; 

SGA還有它的組成部件,這裏主要介紹Shared Pool,Large Pool和Java Pool。當然還包括一些其他的buffer和cache,如Data Buffer Cache.在Oracle11g還多了Stream Pool。 

Large Pool和Java Pool是SGA中可選的內存結構。前者在備份和IO處理以及並行操作時會用到,後者在使用Java的時候會用到。 

Memory -> SGA -> Shared Poll

Shared Pool主要用來存儲最近執行的絕大多數的SQL語句和最近使用的數據定義(data definitions)。我們可以通過SHARED_POOL_SIZE來設置其大小。語句爲:ALERT SYSTEM SET SHARED_POOL_SIZE = 64M;Shared Pool包括兩個主要的影響性能的內存結構:Library Cache和Data Dictionary Cache。

Libray Cache用來存儲絕大多數的最近使用的SQL和PL/SQL語句,並提供最近使用語句的共享。它主要包括Shared SQL area和Shared PL/SQL area。它的大小是由Shared Pool決定的,它由最少最近使用機制管理(Least recently used,LRU algorithm)。

Data Dictionary Cache是一個存儲大多數最近使用數據庫中的定義的集合,包括數據庫文件,表,列,用戶,權限等的信息。它爲server process提供對象名稱解析和訪問驗證(validate access)。它的大小也由Shared Pool決定。

Shared Pool還存儲一些數據塊(data blocks)和重做日誌緩衝。        

Memory -> PGA

 每一個連接到Oracle數據庫的用戶都會有一個自己的PGA。它隨用戶進程的創建而創建,隨用戶進程的終結而終結。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章