記憶體_SGA
SGA_MAX_SIZE :specifies the maximum size of the SGA for the lifetime of the instance.
SGA_TARGET:specifies the total size of all SGA components. If SGA_TARGET is specified,then Buffer cache\Shared pool\Large pool\Java pool\Streams pool are automatically sized:
sga_max_size的值必須大於sga_target,否則會報錯ORA-00823: Specified value of sga_target greater than sga_max_size
SGA_TARGET不等於0,則是ASMM
SGA_MAX_SIZE不能動態修改,修改後必須重啟
SGA主要由資料高速緩衝區(Database Buffer Cache)、共享池(Shared Pool)、重做日誌緩衝區(Redo Log Buffer)、大型池(Large Pool)、Java池(Java Pool)、流池(Streams Pool)組成
資料高速緩衝區(Database Buffer Cache)儲存的最近從資料檔案中檢索出來的資料。包括髒快取塊,空閒快取塊,命中快取塊三種型別。
共享池(Shared Pool)用於快取最近執行過的SQL語句、PL/SQL程式和資料字典資訊,是對SQL語句、PL/SQL程式進行語法分析、編譯、執行的區域,其的主要元件有library cache和dictionary cache。library cache 儲存了最近的SQL/PLSQL程式碼的可執行模式(解析或編譯版本)。
大型池(Large Pool)它可以提供一個大的區以供象資料庫的backup和restore操作,如果沒有在SGA中建立大型池,那麼上述操作所需要的快取空間將在共享池或PGA中分配,因而會影響共享池或PGA的使用效率
Stream pool流池(或者如果沒有配置流池,則是中至多10%的空間)會用於程式在資料庫間移動/複製資料時使用的訊息, 流池只對使用了流資料庫特性的系統是重要的。在這些環境中,必須設定流池,以避免因為這個特性從“竊取”10%的空間。
DataPump工具Expdp/Impdp需要從PGA和SGA的Shared Pool、Streams Pool和Large Pool分配必要的記憶體。為了避免Expdp/Impdp出現ORA-04031/ORA-04030錯誤,我們有必要在自動管理模式下設定合理的 pga_aggregate_target和sga_target(抑或者memory_target)記憶體初始化引數,如果使用手動的SGA管理的話, 那麼有必要保證shared_pool_size的設定適宜,對於Streams Pool和Large Pool一般設定為150MB大小。
Expdp/Impdp對shared Pool的開銷主要體現在其執行過程中需要呼叫一系列的包體PACKGE BODY
Shared Pool
Oracle佔用量最大的兩塊記憶體除了buffer cache區就是Shared Pool的記憶體了,它的結構非常的複雜,而且由於要快取SQL程式碼這種非標準大小的文字,經常會產生大量的碎片化記憶體,shared pool總體上包含了兩大部分,一塊是library cache區,用來快取SQL、PL/SQL程式碼,儲存它們的執行計劃,提高SQL的解析效率,如果你的應用程式碼從來不使用繫結變數,那麼這一塊的記憶體對你來說是一個很大的負擔,但是Oracle裡是無法關閉library cache區的,因此對於OLTP系統,請確保SQL都使用了繫結變數。第二大塊區域是row cache區,用來快取資料庫的資料字典,由於儲存在裡面的資訊是以行的形式存在,因此叫row cache。對於這一塊的記憶體,依據資料庫中元資訊(metadata)的多少而決定,如果資料庫中有幾十萬的物件,那麼這一塊的記憶體就會佔用比較大,同時表上的很多列都有直方圖資訊,也會導致這一區的記憶體佔用比較大。在一個穩定的系統中,這一區域的記憶體基本上是靜態的,Oracle中幾乎沒有操作會頻繁修改row cache區。有個例外情況是沒有cache屬性的sequence,如果這種sequence呼叫頻繁,就會觸發頻繁的修改sequence的屬性值,進而可能會產生row cache lock的一些等待,最佳化的辦法是為每一個sequence設定足夠的cache值。 如果應用程式沒有使用繫結變數,而且難以修改,可以透過設定cursor_sharing為force來嘗試解決問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2105906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SGA與共享記憶體記憶體
- SGA和PGA記憶體管理記憶體
- SGA與共享記憶體2記憶體
- ORACLE 記憶體管理 之四 SGAOracle記憶體
- 將SGA全部PIN到記憶體中記憶體
- SGA與共享記憶體的關係記憶體
- Oracle記憶體結構研究-SGA篇Oracle記憶體
- 自動SGA共享記憶體管理,ASMM,MMAN,sga_target,sga_max_size記憶體ASM
- 實體記憶體充足卻無法增加SGA記憶體
- 使用lock_sga和pre_page_sga引數保證SGA常駐實體記憶體記憶體
- 當實體記憶體小於sga+pga時記憶體
- 【引數】使用lock_sga和pre_page_sga引數保證SGA常駐實體記憶體記憶體
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- oracle例項記憶體(SGA和PGA)調整Oracle記憶體
- oracle資料庫記憶體分配(sga和pga)Oracle資料庫記憶體
- oracle記憶體結構:SGA的區域資訊Oracle記憶體
- 【SGA】【PGA】普適的Oracle記憶體分配策略Oracle記憶體
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Oracle記憶體結構(一)----SGA的區域資訊Oracle記憶體
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- Linux中設定hugepages 在記憶體中 lock SGALinux記憶體
- ORACLE 記憶體管理 之六 SGA Multiple Block Sizes,Large PoolOracle記憶體BloC
- SGA系統全域性區記憶體結構瞭解記憶體
- SGA中各池記憶體分配顆粒大小與SGA_TARGET引數的關係記憶體
- 9i 下sga_max_size 和SGA中各記憶體分配項的關係記憶體
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- 記憶體_大頁記憶體記憶體
- ORACLE RAC 記憶體SGA,PGA配置超過300G的問題Oracle記憶體
- 記憶體管理 記憶體管理概述記憶體
- 【記憶體管理】記憶體佈局記憶體
- Windows 32bit OS上實體記憶體限制以及ORACLE 10G 在32bit OS的SGA記憶體分配限制解決方法Windows記憶體Oracle 10g
- 在AIX5.3中將Oracle SGA定在記憶體中的詳細步驟AIOracle記憶體
- 實體記憶體和虛擬記憶體記憶體
- 遊戲記憶體對比普通記憶體區別 遊戲記憶體和普通記憶體相差大嗎?遊戲記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- 聊聊 記憶體模型與記憶體序記憶體模型