AMM與ASMM
一、AMM相關知識:
1.從oracle 11.1開始oracle提供了透過MEMORY_TARGET引數實現自動SGA和PGA自動管理的功能,從此版本開始不再需要明確設定SGA_TARGET及PGA_AGGREGATE_TARGET,這個被支援在linux、windows、solaris、hpux、aix。
2.在使用MEMORY_TARGET引數的linux機器上,在oracle啟動時遇到ORA-00845是由於/dev/shm的大小小於memory_target所致(df -k /dev/shm),如果設定memory_max_target>memory_target,則需要確保/dev/shm至少memory_max_target
3.從11.1.0.6.0開始ASM例項預設實現自動管理SGA及PGA,(禁用ASM例項的自動記憶體管理,必須手動設定memory_target到0,DBCA介面將不支援此更改,這個bug被修正在11.1.0.7.0)
4.10.1版本之前shared pool在SGA中分配的大小=shared_pool_size+內部SGA的開銷,此開銷被用來維護SGA中各元件的狀態,從10.1開始shared_pool_size將包括內部SGA的開銷
5.在手動記憶體管理模式下,由於shared_pool_size太小不足以容納內部SGA開銷將導致ORA-00371
6.在非windows32位的作業系統上SGA_MAX_SIZE預設被設定為memory_target和memory_max_target中的最大值,在windows32作業系統上sga_max_size=60%memory_target+60%memory_max_target+25%可用虛擬地址空間
7.當lock_sga初始化引數被設定為true時將不能啟用自動記憶體管理
二、啟用、配置AMM:
SQL>show parameter lock_sga ------確保lock_sga為false
SQL>show parameter target ------確定當前SGA_TARGET及PGA_AGGREGATE_TARGET的值
SQL>select value from v$pgastat where name='maximum PGA allocated'; ---確定從上次啟動DB後的最大例項的PGA
memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
為MEMORY_MAX_TARGET確定一個儘可能大的值,等於或大於SGA_TARGET
當DB使用spfile時:ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE; 當DB使用pfile時:編輯pfile設定memory_max_target = nM memory_target = mM
關閉並重啟DB
ALTER SYSTEM SET MEMORY_TARGET = nM; ALTER SYSTEM SET SGA_TARGET = 0; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;
-------!!!如果你在pfile中設定了MEMORY_TARGET沒有設定MEMORY_MAX_TARGET,則資料庫自動設定MEMORY_MAX_TARGET值為MEMORY_TARGET的值
-------!!!如果你在pfile中設定了MEMORY_MAX_TARGET而沒有設定MEMORY_TARGET,則MEMORY_TARGET預設為0,在DB啟動後可以動態改變MEMORY_TARGET不超過MEMORY_MAX_TARGET的值
-------!!!也可以設定SGA_TARGET或PGA_AGGREGATE_TARGET為一個非0的值,這個值將作為SGA或PGA分配的最小值
三、監視、最佳化AMM:
SQL> select * from v$memory_target_advice order by memory_size;
-------MEMORY_SIZE_FACTOR表示假設替代的MEMORY_TARGET大小
-------ESTD_DB_TIME表示在此預計的MEMORY_TARGET大小下所需的DB time
二、ASMM相關知識:
1.SGA_MAX_SIZE設定:如果不設定則oracle在初始化的時候將選擇所有指定元件的總和或者預設值,如果設定的值比分配給所有元件的記憶體小,那麼資料庫將忽略此設定的值
2.SGA_TARGET設定:在設定之前,同時為了啟用自動共享記憶體管理的功能,STATISTICS_LEVEL必須被設定為TYPICAL (the default)或ALL,如果此引數被設定那麼必須設定自動調整大小的元件的大小為0或最小值
3.SGA中能自動調整大小的元件:Fixed SGA、SHARED_POOL_SIZE、LARGE_POOL_SIZE、JAVA_POOL_SIZE、DB_CACHE_SIZE、STREAMS_POOL_SIZE
4.SGA中不能自動調整(固定)大小的元件:LOG_BUFFER、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE、DB_nK_CACHE_SIZE
5.SGA中分配記憶體的單位:在SGA中動態分配各元件大小的最小單元是顆粒,通常來說在多數平臺上如果SGA的大小<=1G,則顆粒大小是4M,SGA>1G,則顆粒大小為16M(32位NT上SGA>1G,則顆粒大小為8M)
6.查詢V$SGAINFO或V$SGA_DYNAMIC_COMPONENTS看顆粒的大小,如果手動給SGA中元件分配的記憶體不是顆粒的倍數,則DB實際給該元件分配(四捨五入到最小粒度的倍數)大於分配值為其顆粒倍數的是小值
7.SGA_MAX_SIZE不能被動態修改
三、啟用、配置ASMM:
從MSMM到ASSM:
1.獲得SGA_TARGET的值SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;
2.修改pfile中sga_target的值並重啟DB,或者ALTER SYSTEM SET SGA_TARGET=value [SCOPE={SPFILE|MEMORY|BOTH}]
3.透過修改pfile中各自動調優元件對應的初始化引數的值為0或最小分配量,或者alter system set %_size=0——————期望的最小值
從AMM到ASMM:
1.ALTER SYSTEM SET MEMORY_TARGET = 0
2.透過修改pfile中各自動調優元件對應的初始化引數的值為0或最小分配量,或者alter system set %_size=0-期望的最小值
---------啟用ASMM後可以動態調整相應自動調整元件的最小值,該值只限制該元件大小不能減小到此值以下,但不限制元件的最大值
---------動態設定sga_target一個非0值之前,也就是啟用ASMM之前最好重啟DB,因為共享池不能被動態收縮,因為其中含有一些開啟的遊標、PL/SQL包及sql的執行狀態
---------手動調整大小的元件也可以動態改變,但增加或減少的相應值都從自動調整大小元件中動態獲取或釋放,而且設定的是一個精確的值
四、監視、最佳化ASMM:
SQL> select * from v$sga_target_advice order by sga_size;
五、建議參考(from Yong Huang):
配置總大小時參考如下:
在現在作業系統記憶體比較充足的情況下,初始一般將shared pool設定為1至3G,其餘的分配給buffer cache
10gASMM中db_cache_size至少2G
11g中將禁用AMM使用ASMM,因為能夠使用大的緩衝頁
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9950964/viewspace-1572111/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASMM和AMMOracleASM
- 關於ASMM和AMMASM
- Oracle 11g AMM與ASMM切換OracleASM
- Oracle的AMM和ASMM以及相關引數探究OracleASM
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- OracleASM關閉AMM,開啟ASMM,修改引數後報ORA-00843 ORA-00849OracleASM
- asmm , assmASMSSM
- ASMM/AMM開啟時動態調整記憶體元件(shared_pool_size, db_cache_size等)大小ASM記憶體元件
- 【AMM】關於ASM中AMM引數說明ASM
- 一點ASMM總結ASM
- 【AMM】關於資料庫例項AMM引數說明資料庫
- ASMM自動管理的功能ASM
- Linux 11G RAC啟用HugePages與AMM的禁用Linux
- 有關ASM和ASMM的理解ASM
- Oracle 11g新引數USE_LARGE_PAGES與AMM使用Oracle
- HugePages與AMM不相容:ORA-00845: MEMORY_TARGET not supported on this system
- 11g AMM和/dev/shmdev
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 4Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 3Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 2Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 1Linux
- ASMM (Auto Shared Memory Manangement) 自動共享記憶體管理ASMNaN記憶體
- _shared_pool_reserved_pct or shared_pool_reserved_size with ASMMASM
- 開啟oracle 10g的sga自動管理-ammOracle 10g
- oracle10g sga自動管理amm(補充一)Oracle
- oracle 10g sga自動管理amm(補充二)Oracle 10g
- Linux Hugepage ,AMM及 USE_LARGE_PAGES for oracle 11GLinuxOracle
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 自動SGA共享記憶體管理,ASMM,MMAN,sga_target,sga_max_size記憶體ASM
- swap交易所AMM模型系統開發搭建部署(步驟分析)模型
- ORA-00845 When Starting Up An 11g Instance With AMM Configured
- Oracle11g自動記憶體管理(AMM)相關的初始化引數Oracle記憶體
- 雙下劃線開頭的記憶體引數對Oracle AMM行為的影響記憶體Oracle
- 2 Day DBA-管理方案物件-監控和優化資料庫-獲取ASMM記憶體尺寸建議物件優化資料庫ASM記憶體
- 【ORA-4030/4031】自動記憶體管理AMM中的ORA-4030/4031問題記憶體
- Linux下安裝Oracle11g , MEMORY_TARGET(AMM)小於/dev/shm處理(ORA-00845)LinuxOracledev
- undefined與null與?. ??UndefinedNull