自動共享記憶體管理 自動記憶體管理 手工記憶體管理
Oracle 的 9i/10g 中已經對記憶體管理逐步做了很大的簡化,11g 則更進一步,引入了一個新的概念自動化記憶體管理(Automatic Memory Management,AMM) . 如果 DBA 真的想偷懶的話,只需要設定兩個引數就可以把煩心的事情都交給 Oracle 折騰了(只要 DBA 足夠心寬)。PGA 與 SGA 一起搞定。這兩個引數分別是:
MEMORY_TARGET--作業系統的角度上 Oracle 所能使用的最大記憶體值。動態引數 MEMORY_MAX_TARGET--MEMORY_TARGET所能設定的最大值。非動態可調。
Tip: 如果使用的是 pfile,設定了 MEMORY_TARGET 而沒有指定 MEMORY_MAX_TARGET 的值,則例項啟動後 MEMORY_MAX_TARGET 的值與 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而沒有指定 MEMORY_TARGET ,例項啟動後 MEMORY_TARGET 為 0 。
AMM 在後臺會啟動一個記憶體管理(Memory Manager, mman)程式。
因為 AMM 的引入,Oracle 記憶體管理更加靈活多樣。 組合出來有 5 種記憶體管理形式.
自動記憶體管理
自動共享記憶體管理
手工共享記憶體管理
自動 PGA 管理
手動 PGA 管理
1) 自動記憶體管理
預設安裝的例項即是 AMM 方式。如下
SQL> show parameters target
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0 memory_max_target big integer 1216M
memory_target big integer 1216M pga_aggregate_target big integer 0
sga_target big integer 0
要注意到 SGA_TARGET 和 都為 0 。
2.自動共享記憶體管理(Automatic Shared Memory Management, ASMM)
這是 10g 引入的管理方式,要使用這種方式,需要設定初始化引數 MEMORY_TARGET=0 ,然後顯式的指定 SGA_TARGET 的值。
SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL>
這兩個引數的修改是有嚴格順序的,如果不遵守倒也沒問題--Oracle 會報告錯誤。
3.手工共享記憶體管理
這個又更加原始了一些。因為原始,所以新的初始化引數 SGA_TARGET 與 MEMORY_TARGET 都要設定為 0. 然後手工設定 share_pool_size 、db_cache_size 等 sga 引數。要注意 RESULT_CACHE_SIZE 引數是 11g 新引入的,用來快取 SQL 結果。
4.自動 PGA 記憶體管理
如果使用 AMM , 則對 PGA 不用操心。如果要做到精細控制而切換到自動 PGA 記憶體管理模式,需要設定WORKAREA_SIZE_POLICY = AUTO(預設即為 AUTO),然後需要指定 PGA_AGGREGATE_TARGET 的值。如需要精確控制PGA,則 WORKAREA_SIZE_POLICY = MANUAL .(Thanks vongates)
5.手動 PGA 管理
前提是 WORKAREA_SIZE_POLICY = manual ,然後分別指定 SORT_AREA_SIZE 等 PGA 相關的引數。估計現在沒有人幹這個吃力不討好的事情了。這個模式大可以忽略。
AMM 的限制
如果初始化引數 LOCK_SGA = true ,則 AMM 是不可用的。
相關動態檢視
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
11g 在簡化 DBA 基本工作上還是下了很大功夫。可是這樣也掩蓋了一些技術細節,Oracle 正在逐步把記憶體的管理變成一個黑盒子,當然這也也是相關演算法更加穩定作為基礎的。總體來說,利大於弊。11g DBA, 準備好了沒有?
--EOF--
MEMORY_TARGET--作業系統的角度上 Oracle 所能使用的最大記憶體值。動態引數 MEMORY_MAX_TARGET--MEMORY_TARGET所能設定的最大值。非動態可調。
Tip: 如果使用的是 pfile,設定了 MEMORY_TARGET 而沒有指定 MEMORY_MAX_TARGET 的值,則例項啟動後 MEMORY_MAX_TARGET 的值與 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而沒有指定 MEMORY_TARGET ,例項啟動後 MEMORY_TARGET 為 0 。
AMM 在後臺會啟動一個記憶體管理(Memory Manager, mman)程式。
因為 AMM 的引入,Oracle 記憶體管理更加靈活多樣。 組合出來有 5 種記憶體管理形式.
自動記憶體管理
自動共享記憶體管理
手工共享記憶體管理
自動 PGA 管理
手動 PGA 管理
1) 自動記憶體管理
預設安裝的例項即是 AMM 方式。如下
SQL> show parameters target
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0 memory_max_target big integer 1216M
memory_target big integer 1216M pga_aggregate_target big integer 0
sga_target big integer 0
要注意到 SGA_TARGET 和 都為 0 。
2.自動共享記憶體管理(Automatic Shared Memory Management, ASMM)
這是 10g 引入的管理方式,要使用這種方式,需要設定初始化引數 MEMORY_TARGET=0 ,然後顯式的指定 SGA_TARGET 的值。
SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL>
這兩個引數的修改是有嚴格順序的,如果不遵守倒也沒問題--Oracle 會報告錯誤。
3.手工共享記憶體管理
這個又更加原始了一些。因為原始,所以新的初始化引數 SGA_TARGET 與 MEMORY_TARGET 都要設定為 0. 然後手工設定 share_pool_size 、db_cache_size 等 sga 引數。要注意 RESULT_CACHE_SIZE 引數是 11g 新引入的,用來快取 SQL 結果。
4.自動 PGA 記憶體管理
如果使用 AMM , 則對 PGA 不用操心。如果要做到精細控制而切換到自動 PGA 記憶體管理模式,需要設定WORKAREA_SIZE_POLICY = AUTO(預設即為 AUTO),然後需要指定 PGA_AGGREGATE_TARGET 的值。如需要精確控制PGA,則 WORKAREA_SIZE_POLICY = MANUAL .(Thanks vongates)
5.手動 PGA 管理
前提是 WORKAREA_SIZE_POLICY = manual ,然後分別指定 SORT_AREA_SIZE 等 PGA 相關的引數。估計現在沒有人幹這個吃力不討好的事情了。這個模式大可以忽略。
AMM 的限制
如果初始化引數 LOCK_SGA = true ,則 AMM 是不可用的。
相關動態檢視
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
11g 在簡化 DBA 基本工作上還是下了很大功夫。可是這樣也掩蓋了一些技術細節,Oracle 正在逐步把記憶體的管理變成一個黑盒子,當然這也也是相關演算法更加穩定作為基礎的。總體來說,利大於弊。11g DBA, 準備好了沒有?
--EOF--
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2147465/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 自動記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 記憶體自動管理與手動管理記憶體
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- oracle的自動記憶體管理Oracle記憶體
- oracle 10g 自動共享記憶體管理Oracle 10g記憶體
- 將手動記憶體管理變為自動管理記憶體 ORACLE 11G記憶體Oracle
- JVM學習-自動記憶體管理JVM記憶體
- 記憶體管理 記憶體管理概述記憶體
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- oracle 11g自動記憶體管理Oracle記憶體
- JVM自動記憶體管理機制 二JVM記憶體
- 開啟oracle記憶體自動化管理Oracle記憶體
- 動態記憶體管理記憶體
- ASMM (Auto Shared Memory Manangement) 自動共享記憶體管理ASMNaN記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- 【記憶體管理】記憶體佈局記憶體
- golang手動管理記憶體Golang記憶體
- 記憶體管理記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Aerospike的bin記憶體管理--即列記憶體管理ROS記憶體
- Unix/Linux 系統自動化管理: 記憶體管理篇Linux記憶體
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- oracle 11G 自動記憶體管理設定Oracle記憶體
- Oracle9i 自動管理PGA記憶體(zt)Oracle記憶體
- 10g、11g記憶體自動管理記憶體
- oracle 11g 自動記憶體管理(其三)Oracle記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- Linux共享記憶體的管理Linux記憶體
- 第8章 管理共享記憶體記憶體
- Go 語言的手工記憶體管理Go記憶體
- 記憶體管理-swMemoryGlobal記憶體
- OC記憶體管理記憶體