Oracle記憶體結構,oracle結構

來源:互聯網
上載者:User

Oracle記憶體結構,oracle結構

Oracle的記憶體結構分為SGA和PGA,對於SGA是動態分配的,通過參數sga_max_size進行配置,在oracle資料庫執行個體啟動的時候就已經分配好,對於所有的會話串連共用一個SGA;對於PGA則是每個使用者的會話串連建立一個自己的PAG的記憶體地區。

 

Shared Pool:存放最近執行過的sql語句的執行結構(執行計畫)已經資料定義(資料字典).主要組成分為library cache,data dictionary cache。其中大小的決定參數是shared_pool_size。

 

對於library cache主要是存放shared sql area 和 shared pl/sql area 這兩個地區塊

 

對於 data dictionary cache 主要是用於存放資料系統,系統的動態效能檢視和系統資料表

 

對於SGA的重頭戲 database buffer cache 主要是用來存放data資料檔案的資料區塊,把硬碟中的資料讀取直接存放到記憶體中,提高資料的操作速度。對於使用者對資料的操作,首先是找database buffer cache中的資料,如果可以找到就直接返回資料,不再從硬碟中找,提高資料響應速度。反應資料庫效能的一個重要指標就是database buffer cache的命中率.其中主要的參數有:db_keep_cache_size,db_cache_size,db_recycle_cache_size

 

Redo log buffer:是資料檔案redo log的緩衝,如果需要恢複資料,讀取redo log 檔案的話,會先從 redo log buffer 裡面讀取資料庫的操作記錄。對於資料庫的操作記錄也是先寫入到redo log buffer,然後在儲存到 資料檔案 redo log files 中

 

Larger pool: Rman備份的時候會使用larger pool 進行資料的緩衝,某些server procees 的I/O操作也是需要使用larger pool 進行資料的緩衝。

 

Java pool: 大小決定於參數java_pool_size,對於oracle中使用java語言寫的方法在執行的時候就是使用java pool這個儲存地區。該快取區域主要是用於java的相關操作。

 

 

 

 


簡要說明oracle資料庫體系的記憶體結構

記憶體是影響資料庫效能的重要因素,Oracle8i使用靜態記憶體管理,Oracle 10g使用動態
記憶體管理。所謂靜態記憶體管理,就是在資料庫系統中,無論是否有使用者串連,也無論並發用
量大小,只要資料庫服務在運行,就會分配固定大小的記憶體;動態記憶體管理允許在資料庫服
務運行時對記憶體的大小進行修改,讀取大資料區塊時使用大記憶體,小資料區塊時使用小記憶體,讀
取標準記憶體塊時使用標準記憶體設定。
按照系統對記憶體使用量方法的不同,Oracle資料庫的記憶體可以分為以下幾個部分:
??系統全域區:SGA(System Global Area)
??程式全域區:PGA(Programe Global Area)
??排序池:(Sort Area)
??大池:(Large Pool)
??Java池:(Java Pool)
 
簡要說明oracle資料庫體系的記憶體結構

1:Oracle執行個體(Instance)
在一個伺服器中,每一個啟動並執行Oracle資料庫都與一個資料庫執行個體相聯絡,執行個體是我們
訪問資料庫的手段。
執行個體在作業系統中用ORACLE_SID來標識,在Oracle中用參數INSTANCE_NAME來標識,
它們兩個的值是相同的。資料庫啟動時,系統首先在伺服器記憶體中分配系統全域區(SGA),
構成了Oracle的記憶體結構,然後啟動若干個常駐記憶體的作業系統進程,即組成了Oracle的
進程結構,記憶體地區和後台進程合稱為一個Oracle執行個體。
資料庫與執行個體之間是1對1/n的關係,在非並行的資料庫系統中每個Oracle資料庫與一個
執行個體相對應;在並行的資料庫系統中,一個資料庫會對應多個執行個體,同一時間使用者只與一個
執行個體相聯絡,當某一個執行個體出現故障時,其他執行個體自動服務,保證資料庫正常運行。在任何
情況下,每個執行個體都只可以對應一個資料庫。

2:Oracle 10g動態記憶體管理
記憶體是影響資料庫效能的重要因素,Oracle8i使用靜態記憶體管理,Oracle 10g使用動態
記憶體管理。所謂靜態記憶體管理,就是在資料庫系統中,無論是否有使用者串連,也無論並發用
量大小,只要資料庫服務在運行,就會分配固定大小的記憶體;動態記憶體管理允許在資料庫服
務運行時對記憶體的大小進行修改,讀取大資料區塊時使用大記憶體,小資料區塊時使用小記憶體,讀
取標準記憶體塊時使用標準記憶體設定。
按照系統對記憶體使用量方法的不同,Oracle資料庫的記憶體可以分為以下幾個部分:
•系統全域區:SGA(System Global Area)
•程式全域區:PGA(Programe Global Area)
•排序池:(Sort Area)
•大池:(Large Pool)
•Java池:(Java Pool)

2-1:系統全域區SGA(System Global Area)
SGA是一組為系統分配的共用的記憶體結構,可以包含一個資料庫執行個體的資料或控制信
息。如果多個使用者串連到同一個資料庫執行個體,在執行個體的SGA中,資料可以被多個使用者共用。
當資料庫執行個體啟動時,SGA的記憶體被自動分配;當資料庫執行個體關閉時,SGA記憶體被回收。
SGA是佔用記憶體最大的一個地區,同時也是影響資料庫效能的重要因素。
SGA的有關資訊可以通過下面的語句查詢,sga_max_size的大小是不可以動態調整的。
=====================================
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- --------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 164M
sga_target big integer 0

......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.