Oracle11g自動記憶體管理(AMM)相關的初始化引數
預設情況下,Oracle 11g是使用AMM的。我們在安裝過程中,指定Oracle使用記憶體的百分比,這個取值就作為MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果這兩個引數設定為非零取值,那麼Oracle就是採用AMM管理策略的。同時,如果我們設定這兩個引數為0,則AMM自動關閉。對應的SGA_TARGET、PGA_AGGREGATE_TARGET引數取值非零之後,Oracle自動退化使用ASMM特性。
下面介紹一下4個相關的初始化引數。
SGA_MAX_SIZE
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
SGA_MAX_SIZE = integer [K | M | G] |
預設值 |
資料庫啟動時SGA的初始化大小,取決於SGA中不同池的大小,例如緩衝區,共享池,大池,等等。 |
是否可修改 |
否 |
取值範圍 |
0~視作業系統而定 |
SGA_MAX_SIZE指定了例項生命週期內SGA的最大值。
在64位平臺或者非32位Windows平臺,當MEMORY_TARGET或MEMORY_MAX_TARGET被設定時,SGA_MAX_SIZE會被設定為二者的較大值。這樣將會預留更多的地址空間用於擴大SGA。
在32位Windows平臺,SGA_MAX_SIZE的預設值是下面幾個引數值的最大值:
l 60%*MEMORY_TARGET(如果指定的話)
l 60%*MEMORY_MAX_TARGET (如果指定的話)
l 25%*總的可用虛擬地址空間
SGA_TARGET
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
SGA_TARGET = integer [K | M | G] |
預設值 |
0(SGA自動調整功能在DEFERRED模式調整請求下被禁用,但是在IMMEDIATE模式調整請求下是允許的) |
是否可修改 |
ALTER SYSTEM |
取值範圍 |
64M~視作業系統而定 |
是否基本引數 |
是 |
SGA_TARGET制定了SGA各個元件的總大小。如果SGA_TARGET被指定,那麼下面所列出的記憶體池大小將被自動分配:
l Buffer cache (DB_CACHE_SIZE)
l Shared pool (SHARED_POOL_SIZE)
l Large pool (LARGE_POOL_SIZE)
l Java pool (JAVA_POOL_SIZE)
l Streams pool (STREAMS_POOL_SIZE)
如果上述自動調整的記憶體池被設定為非零值,那麼這些值將被自動共享記憶體管理系統(ASMM, Automatic Shared Memory Management)視為最小值。如果一個應用元件正常執行要求一個最小數值的記憶體,那麼你就需要設定最小值。
下述記憶體池需要手工設定大小,不受自動共享記憶體管理系統(ASMM, Automatic Shared Memory Management)的影響:
l Log buffer
l Other buffer caches, such as KEEP, RECYCLE, and other block sizes
l Fixed SGA and other internal allocations
當自動共享記憶體管理系統在計算自動調整記憶體池的具體大小時,會將上述記憶體池記憶體從總的可用SGA_TARGET中扣除。
在“預設值”欄位中,IMMEDIATE模式自動調整要求是必要的,這樣可以避免ORA-04031錯誤。DEFERRED和IMMEDIATE模式的具體值,可以透過V$MEMORY_RESIZE_OPS檢視的OPER_MODE列來檢視。
MEMORY_MAX_TARGET
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
MEMORY _MAX_TARGET = integer [K | M | G] |
預設值 |
0 |
是否可修改 |
NO |
取值範圍 |
0~Oracle資料庫可用實體記憶體大小 |
是否基本引數 |
否 |
MEMORY_MAX_TARGET指定了一個DBA可以設定MEMORY_TARGET初始化引數的最大值。請參見MEMORY_TARGET的有關描述,獲取更多有關MEMORY_MAX_TARGET和MEMORY_TARGET的設定是如何相互影響的資訊。
MEMORY_TARGET
屬性 |
描述 |
引數型別 |
Big integer |
語法 |
MEMORY _TARGET = integer [K | M | G] |
預設值 |
0(SGA自動調整功能在DEFERRED模式調整請求下被禁用,但是在IMMEDIATE模式調整請求下是允許的) |
是否可修改 |
ALTER SYSTEM |
取值範圍 |
152M~視作業系統而定 |
是否基本引數 |
否 |
MEMORY_TARGET指定Oracle系統範圍的可用記憶體。資料庫將記憶體大小調整為MEMORY_TARGET的值,根據需要減少或擴大SGA和PGA。
MEMORY_TARGET應該設定大於或等於當前SGA和PGA大小的總和。
在文字初始化引數檔案中,如果省略MEMORY_MAX_TARGET幷包括一個MEMORY_TARGET值,則資料庫會自動將MEMORY_MAX_TARGET的值設定為MEMORY_TARGET的值。如果省略MEMORY_TARGET幷包括MEMORY_MAX_TARGET,則MEMORY_TARGET引數預設值為零。在資料庫啟動後,你可以動態地修改MEMORY_TARGET為非零值,只要它不超過MEMORY_MAX_TARGET的值。
總的記憶體使用量可以超過MEMORY_TARGET的值。例如,只要在作業系統級別上有可用記憶體,無論MEMORY_TARGET的值是多少,都可以將記憶體分配給PL / SQL表和可變陣列。
在“預設值”欄位中,IMMEDIATE模式自動調整要求是必要的,這樣可以避免ORA-04031錯誤。DEFERRED和IMMEDIATE模式的具體值,可以透過V$MEMORY_RESIZE_OPS檢視的OPER_MODE列來檢視。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1813467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- ORACLE11G記憶體管理引數Oracle記憶體
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- oracle11g中的幾個記憶體初始化引數Oracle記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- Oracle的AMM和ASMM以及相關引數探究OracleASM
- iOS記憶體管理相關iOS記憶體
- Oracle11g 自動化建庫及調整相關引數Oracle
- 自動記憶體管理記憶體
- oracle的自動記憶體管理Oracle記憶體
- oracle 安裝要用到的記憶體相關引數詳解Oracle記憶體
- 關於oracle11G的自動記憶體管理MEMORY_TARGET和MEMORY_MAX_TARGETOracle記憶體
- 【AMM】關於ASM中AMM引數說明ASM
- iOS 記憶體管理相關面試題iOS記憶體面試題
- 記憶體自動管理與手動管理記憶體
- 自動記憶體調整中真正決定自動調整的引數記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- oracle 記憶體引數調整優化相關傾力整理Oracle記憶體優化
- Linux系統中與記憶體相關的幾個核心引數Linux記憶體
- 執行緒相關記憶體引數sort_buffer/join_buffer等的記憶體分配時機執行緒記憶體
- oracle 記憶體引數調整最佳化相關傾力整理Oracle記憶體
- solaris記憶體引數調整及管理記憶體
- 雙下劃線開頭的記憶體引數對Oracle AMM行為的影響記憶體Oracle
- 將手動記憶體管理變為自動管理記憶體 ORACLE 11G記憶體Oracle
- 【ORA-4030/4031】自動記憶體管理AMM中的ORA-4030/4031問題記憶體
- JVM學習-自動記憶體管理JVM記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 【AMM】關於資料庫例項AMM引數說明資料庫
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- oracle 11g自動記憶體管理Oracle記憶體
- JVM自動記憶體管理機制 二JVM記憶體
- 開啟oracle記憶體自動化管理Oracle記憶體
- 記憶體優化相關記憶體優化
- max_connections引數對mysql初始化記憶體的影響MySql記憶體
- 關於記憶體管理單元須要掌握的相關知識記憶體
- golang的記憶體相關內容Golang記憶體
- JVM記憶體引數配置JVM記憶體