ASMM自動管理的功能

jolly10發表於2008-01-25
Automatic Shared Memory Management(ASMM)是ORACLE10g另外一個自動管理的功能。[@more@]

Automatic Shared Memory Management(ASMM)是ORACLE10g另外一個自動管理的功能。
只需指定SGA_TARGET引數(SAG的總大小),資料庫將會根據負載和歷史資訊來自動分配SAG的每個元件。
啟用ASSM需將STATISTICS_LEVEL引數設為TYPICAL或ALL,並且SGA_TARGET引數為非0.
ASSM自動分配以下SGA元件:
--DB_CACHE_SIZE
--SHARED_POOL_SIZE
--LARGE_POOL_SIZE
--JAVE_POOL_SIZE
以下的元件還需要手動來管理
--LOG_BUFFER
--DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE,DB_nK_CACHE_SIZE
--STREAMS_POOL_SIZE
--Fixed-SGA area and internal allocations
手動管理的元件也包括在SAG_TARGET中,比如SGA_TARGET是400M,LOG_BUFFER為1M,DB_KEEP_CACHE_SIZE為500M,那麼可供ASSM來自動管理的大小隻有349M。
SAG_TARGET引數可以透過ALTER SYSTEM來動態的改變大小,但不能超過SGA_MAX_SIZE引數大小,SGA_MAX_SIZE不是動態可以改變的。
可以透過V$SGA_DYNAMIC_COMPONENTS檢視來檢視當前SGA元件的大小。
如SGA_TARGET設為0來關閉ASSM,當前各元件的SIZE將會寫入SPFILE用來下次的啟動。

動態SGA相關的檢視:
V$SGA_CURRENT_RESIZE_OPS
V$SGA_RESIZE_OPS
V$SGA_DYNAMIC_COMPONENTS
V$SGA_DYNAMIC_FREE_MEMORY

ORACLE10G用MMAN程式來管理automatic shared memory.MMAN程式觀察系統的負載來決定比較理想的記憶體分配。
根據負載的情況,ASSM做以下工作:
--在後臺週期性捕獲統計資訊
--用不同的記憶體建議
--分析記憶體元件的情況
--如有需要移除記憶體
--如SPFILE被使用,關閉資料庫時記錄當前各元件大小

  當重新設定了sga_target的大小的時候,只有新值比當前元件的值大的時候才會立刻改變.如果你設定sga_target為8g,設定shared_pool_size為2g,你確信為了容納必要的記憶體,共享池至少2g.當你把共享池調為1g的時候,不會立刻改變共享池的大小.它只會告訴自動記憶體調整演算法在需要的時候,會把共享池改為1g.另外,如果一開始共享池是1g,你把它設定為2g,那麼馬上就生效.在重新改變操作中使用的記憶體是從一個或幾個其它的自動調整的元件中得到了,手工的元件不受影響.
  
  手工改變大小的元件也可以動態的修改,但是他們的不同就是馬上就是設定的值.這樣,如果手工元件的值增加,額外的記憶體就是從一個或多個自動調整的元件中獲得的.如果手工元件的值減少了,釋放出來的記憶體就給了自動調整大小的元件.

在共享記憶體自動管理(ASMM)機制出現之前,共享記憶體的管理是一個十分複雜的工作。Oracle 9i開始支援部分SGA引數可以動態調整,這個功能大大提升了DBA進行記憶體管理的能力,調整部分記憶體引數不需要重啟資料庫。從9.0.1開始,共享池和default pool的大小可以動態修改,從9.2開始,又增加了LARGE POOL的動態調整。Oracle 10G則出現了一種革命性的技術-ASMM。共享記憶體自動管理可以把部分緩衝區的管理智慧交給Oracle資料庫管理器本身。RDBMS根據系統的負載情況,自動調整這些緩衝區,從而達到最佳化系統效能的作用。

在安裝ORACLE 10G的時候,ASMM預設是關閉的,因為SGA_TARGET引數的預設值是0,當該引數為非0值,並且STATISTICS_LEVEL是TYPICAL 或者ALL的時候,ORACLE RDBMS啟用ASMM。由於廣大使用者對ASMM還不瞭解,因此目前應用ASMM的資料庫並不多,特別是大型資料庫,很少使用ASMM。在最近的一些Oracle版本中,總是能夠出現一些自動化管理的功能,廣大使用者也是在最初不理解,並不敢用的情況下,逐步消除了顧慮,並且廣泛的應用了這些自動管理機制。以回滾段自動管理機制來說,該機制大大簡化了DBA管理回滾段的工作,起到了十分好的效果。PGA自動管理的引入,也大大提高了PGA各種工作區的利用率,節省了大量寶貴的記憶體資源。因此我們有理由相信,ORACLE ASMM技術也將會大大減輕DBA管理共享記憶體的工作量。和其他自動管理機制一樣,對於記憶體資源競爭不是很激烈的系統或者是系統壓力不是很大的系統,使用ASMM可以減輕DBA的工作量。

ASMM的另外一個優勢是能夠把有限的記憶體資源合理分配,不會因為DBA設定錯誤而導致部分緩衝區效能下降。一個新的後臺程式mman會對系統的緩衝區狀態進行分析,根據目前系統的負載情況,根據一定的策略對緩衝區進行調整。其處理過程如下:
? 首先,週期性採集系統的狀態
? 生成或分析建議直方圖
? 根據直方圖找到合理的緩衝區調整方案
? 根據調整方案自動調整各個緩衝區的大小
使用ASMM也解決了一個以前一直困擾DBA的問題,那就是我們的系統往往是白天在做OLTP操作,夜晚有很多統計分析工作。白天和夜晚需要的記憶體分配策略是不同的。在ASMM技術出現之前,DBA沒有很好的方法來解決這個矛盾,除非DBA能夠每天進行引數調整。如果使用ASMM技術,可以透過ASMM技術自身的自動調節功能來動態分配各種記憶體緩衝區,從而起到DBA很難做到的作用。
ASMM有很多優點,但是ASMM也不是萬能的,使用ASMM不當也會帶來嚴重的系統效能問題,如果系統中的記憶體資源不足,或者系統的負載十分大,那麼就需要DBA透過自己的工作手工調整來進行最佳化。如果記憶體已經不足,或者出現了明顯的由於緩衝區引起的效能問題,那麼就儘量不要使用ASMM。

目前ASMM並不能管理所有的SGA物件,隨著ASMM技術的進一步發展,ASMM能夠管理的SGA物件會越來越多,ASMM的人工智慧也會越來越強大。以下緩衝區是可透過ASMM來管理的:
? SHARED POOL
? LARGE POOL
? JAVA POOL
? DB CACHE
要注意的是,10G ASMM只能管理DB CACHE中的DEFAULT池,而不能管理所有的DB CACHE。KEEP池、RECYCLE池和NK緩衝池都需要手工管理。另外LOG BUFFER和STREAM POOL等也需要手工管理。
和ASMM相關的ORACLE引數包括SGA_MAX_SIZE和SGA_TARGET。前者定義了SGA能使用的最大記憶體大小,SGA_TARGET設定了動態調整記憶體的各種緩衝池的總的大小。要注意的是SGA_TARGET是一個可以動態調整的引數,它限定了在進行ASMM處理的時候,所有記憶體緩衝區的總的大小,包含ASMM可以動態自動調整的緩衝池和需要手工配置的緩衝池的總的大小。如果SGA_TARGET設定為3G,DB_KEEP_CACHE_SIZE是1G,那麼ASSM管理的緩衝池總的大小不能超過2G。
如果使用ASMM,調整SGA_TARGET是DBA的主要工作。SGA_TARGET可以動態調整。SGA_TARGET的最大值不能超過SGA_MAX_SIZE規定的大小。如果DBA調整SGA_TARGET的值,那麼會引起被ASMM管理的緩衝區的變化,而不會引起手工管理的緩衝區的變化。
在使用ASMM的情況下,ASMM自動管理的緩衝池可以設定為0,也就是說不設定任何限制,由ASSM完全管理。如果某個ASMM自動管理的緩衝池設定了非零的值,那麼ASMM會保證在任何情況下,這個緩衝池的大小不會小於這個引數設定值。在資料庫執行的過程中,DBA可以動態調整ASMM管理的緩衝池的大小,如果設定的新值大於目前緩衝池的大小,並且是合理的,那麼該設定會立即生效。如果設定的新值小於目前緩衝池的大小,ASMM會記錄下這個設定建議,但是不會立即縮小緩衝池,而是會等待今後別的緩衝池需要擴充套件的時候才會釋放。
對於一個使用ASMM的系統,可以隨時改變為關閉ASMM,只要將SGA_TARGET設定為0。如果這個操作發生了,那麼所有的ASMM管理的引數都會保留為當前的設定。

ASMM是ORACLE 10g的一項革命性的技術,其意義並不僅僅是簡化DBA的管理難度。隨著ASMM技術的日漸成熟,ASMM使ORACLE提供了一種對OLTP/OLAP應用自適應的能力,從而解決一直困擾DBA的混合型應用的問題。對於既有OLTP應用,又在部分時間(比如晚上或者月底)帶有大量OLAP分析的系統來說,如果能夠根據應用的特點,動態自動調整相關緩衝池,那麼意義是十分巨大的。此類應用目前十分廣泛,在電信、製造業、政府等行業應用裡,都或多或少存在類似的問題。
在使用ASMM的情況下,透過SGA_TARGET可以設定SGA緩衝池的最大大小,另外可以透過設定ASMM管理緩衝池的引數來限制某個緩衝池的最小限制,以防止ASMM出現錯誤的設定,導致緩衝池抖動。在這些機制的保證下,只要DBA能夠設定合理的配置,能夠保證ASMM提供最佳的管理效能。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-998398/,如需轉載,請註明出處,否則將追究法律責任。

相關文章