1. 程式人生 > 實用技巧 >Oracle的體系結構(2)--記憶體結構

Oracle的體系結構(2)--記憶體結構

一,記憶體結構
主要包括SGA和PGA.
PGA是當程式起來時,給程序用。(排序,)大小由pga_aggregate_target 決定。

SGA是由一組記憶體結構組成,它是由所有使用者程序共享的一塊記憶體區域。啟動例項時,Oracle自動分配SGA,關閉例項時,oracle自動釋放SGA所佔用的記憶體空間。SGA的大小由sga_target決定。

二,SGA的基本元件:
1) shared pool
共享池是對SQL,PL/SQL程式進行語法分析,編譯,執行的記憶體區域。共享池是由庫快取(library cache),和資料字典快取(Data dictionary cache)以及結果快取(Result cache)等組成。
共享池的大小直接影響資料庫的效能

  library cache : sql 和plsql 的解析場所,存放著所有編譯過的sql語句程式碼,以備所有使用者共享。

  data dictionary cache: 存放重要的資料字典資訊,以備資料庫使用。

  server result cache : 存放伺服器端SQL 結果集及PL/SQL函式返回值。

2)Database buffer cache
資料高速緩用於儲存從磁碟檔案中讀入的資料,為所有使用者共享。
伺服器程序(server process)將讀入的資料儲存在資料快取區中,當後續的請求需要這些資料時可以在記憶體中找到,則不需要再從磁碟讀取。
資料緩衝區中被修改的資料塊(髒塊)由後臺程序DBWR將其寫入磁碟。
資料緩衝區的大小對資料庫的讀取速度有直接的影響。


3)Redo log buffer
日誌條目(redo entries)記錄了資料庫的所有修改資訊(包括DML和DDL),為的是資料庫恢復。日誌條目首先產生於日誌緩衝區。日誌緩衝區。日誌緩衝區較小,它是以位元組為單位的,它極其重要。
檢視大小:> show parameter log_buffer;

日誌快取的大小在啟動後是固定的,不能通過SGA自動分配,需要調整的話只能通過修改引數檔案然後重新啟動生效,不能動態修改。
ALTER SYSTEM SET LOG_BUFFER = 1 SCOPE=SPFILE;
STARTUP FORCE

4) Large pool
為了進行大的後臺程序操作而分配的記憶體空間,與shared pool 管理不同,主要用於共享伺服器的session memory ,RMAN備份恢復以及並行查詢等。
5) Java pool

為了JAVA 虛擬機器及應用而分配的記憶體空間,包含所有session指定的JAVA程式碼和資料。
6)Stream pool
為了stream process 而分配的記憶體空間。stream 技術是為了在不同資料庫之間共享資料。因此,它只對使用了stream 資料庫特性的系統是重要的。