關於oracle11G的自動記憶體管理MEMORY_TARGET和MEMORY_MAX_TARGET
自動記憶體管理是用兩個初始化引數進行配置的:
MEMORY_TARGET:動態控制SGA和PGA時,Oracle總共可以使用的共享記憶體大小,這個引數是動態的,因此提供給Oracle的記憶體總量是可以動態增大,也可以動態減小的。它不能超過MEMORY_MAX_TARGET引數設定的大小。預設值是0。
MEMORY_MAX_TARGET:這個引數定義了MEMORY_TARGET最大可以達到而不用重啟例項的值,如果沒有設定MEMORY_MAX_TARGET值,預設等於MEMORY_TARGET的值。
使用動態記憶體管理時,SGA_TARGET和PGA_AGGREGATE_TARGET代表它們各自記憶體區域的最小設定,要讓Oracle完全控制記憶體管理,這兩個引數應該設定為0。
memory_max_target是一個非動態引數,不能在memory範圍動態改變,只能透過指明 scope=spfile這個條件來達到資料庫在下次啟動後讓改變生效的目的。
但是memory_target這個引數是可以動態調節的...也就是說不需要重新啟動DB,就可以讓其生效。
MEMORY_MAX_TARGET 是設定Oracle能佔OS多大的記憶體空間
SGA_MAX_SIZE是Oracle SGA 區最大能佔多大記憶體空間
10g 的sga_max_size 是動態分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,是根據Oracle 執行狀況來重新分配SGA 各記憶體塊的大小。PGA在10g中需要單獨設定。
11g MEMORY_MAX_TARGET 引數包含SGA和PGA兩部分。
在手動建立資料庫時,只需要在建立資料庫之前設定合適的MEMORY_TARGET和MEMORY_MAX_TARGET初始化引數。
在一個系統上啟用自動記憶體管理其實很簡單,不需要事先做太多的事情,可以使用下面的計算公式來計算: MEMORY_TARGET=SGA_TARGET+GREATEST(PGA_AGGREGATE_TARGET,"maximumPGAallocated");
下面的查詢語句向你展示有關的資訊,以及如何計算出需要的值:
1.SELECT name, value
FROM v$parameter
WHERE name IN ('pga_aggregate_target', 'sga_target')
UNION
SELECT 'maximum PGA allocated' AS name, TO_CHAR(value) AS value
FROM v$pgastat
WHERE name = 'maximum PGA allocated';
2.SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target
FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'sga_target') sga,
(SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'pga_aggregate_target') pga,
(SELECT value FROM v$pgastat WHERE name = 'maximum PGA allocated') max_pga;
除現有的用於記憶體管理的V$檢視外,Oracle 11g還新增加了下面4個檢視用於自動記憶體管理:
V$MEMORY_CURRENT_RESIZE_OPS
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
V$MEMORY_TARGET_ADVICE
為每個動態元件分配的記憶體大小使用檢視V$MEMORY_DYNAMIC_COMPONENTS顯示:
SELECT component, current_size, min_size, max_size
FROM v$memory_dynamic_components
WHERE current_size != 0;
V$MEMORY_CURRENT_RESIZE_OPS和V$MEMORY_RESIZE_OPS分別顯示了元件當前改變大小操作的資訊和上一次改變大小操作的資訊。
V$MEMORY_TARGET_ADVICE提供了幫助調整MEMORY_TARGET引數的資訊,它顯示了一段MEMORY_TARGET設定可用的範圍,根據當前的設定,估算完成當前負載所需要的DB Time值。
SELECT * FROM v$memory_target_advice ORDER BY memory_size;
下面來看看在11g 中Memory_target 設定和不設定對SGA/PGA 的影響:
如果Memory_target 設定為非0 值
1、sga_target 和 pga_aggregate_target 已經設定大小
Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和 memory_max_size 一致
2、sga_target 設定大小, pga_aggregate_target 沒有設定大小
pga_aggregate_target初始化值=memory_target-sga_target
3、sga_target 沒有設定大小, pga_aggregate_target 設定大小
sga_target 初始化值=memory_target-pga_aggregate_target
4、sga_target 和 pga_aggregate_target 都沒有設定大小
兩個值沒有最小值和預設值,Oracle 將根據資料庫執行狀況進行分配大小,但在資料庫啟動是會有一個固定比例來分配:
sga_target =memory_target *60%
pga_aggregate_target=memory_target *40%
如果Memory_target 沒有設定為0
11g 中預設為0 則初始狀態下取消了Memory_target 的作用,完全和10g 在記憶體管理上一致,完全向下相容。
1、SGA_TARGET設定值
自動調節SGA 中的shared pool,buffer cache,redo log buffer,java pool,larger pool等記憶體空間的大小。PGA 則依賴pga_aggregate_target 的大小。
2、SGA_target 和PGA_AGGREGATE_TARGET 都沒有設定
SGA 中的各元件大小都要明確設定,不能自動調整各元件大小。PGA不能自動增長和收縮
3: MEMORY_MAX_TARGET 設定而MEMORY_TARGET =0 這種情況先和10g 一樣。
在11g 中可以使用下面看各元件的值:
SQL> show parameter 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 18G
memory_target big integer 18G
parallel_servers_target integer 256
pga_aggregate_target big integer 8G
sga_target big integer 9G
如果需要監視Memory_target 的狀況則可以使用下面三個動態試圖:
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
v$memory_target_advice
一張能直觀體現10g和11g的自動記憶體管理的引數之間的關係的引數關係圖:
MEMORY_TARGET:動態控制SGA和PGA時,Oracle總共可以使用的共享記憶體大小,這個引數是動態的,因此提供給Oracle的記憶體總量是可以動態增大,也可以動態減小的。它不能超過MEMORY_MAX_TARGET引數設定的大小。預設值是0。
MEMORY_MAX_TARGET:這個引數定義了MEMORY_TARGET最大可以達到而不用重啟例項的值,如果沒有設定MEMORY_MAX_TARGET值,預設等於MEMORY_TARGET的值。
使用動態記憶體管理時,SGA_TARGET和PGA_AGGREGATE_TARGET代表它們各自記憶體區域的最小設定,要讓Oracle完全控制記憶體管理,這兩個引數應該設定為0。
memory_max_target是一個非動態引數,不能在memory範圍動態改變,只能透過指明 scope=spfile這個條件來達到資料庫在下次啟動後讓改變生效的目的。
但是memory_target這個引數是可以動態調節的...也就是說不需要重新啟動DB,就可以讓其生效。
MEMORY_MAX_TARGET 是設定Oracle能佔OS多大的記憶體空間
SGA_MAX_SIZE是Oracle SGA 區最大能佔多大記憶體空間
10g 的sga_max_size 是動態分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,是根據Oracle 執行狀況來重新分配SGA 各記憶體塊的大小。PGA在10g中需要單獨設定。
11g MEMORY_MAX_TARGET 引數包含SGA和PGA兩部分。
在手動建立資料庫時,只需要在建立資料庫之前設定合適的MEMORY_TARGET和MEMORY_MAX_TARGET初始化引數。
在一個系統上啟用自動記憶體管理其實很簡單,不需要事先做太多的事情,可以使用下面的計算公式來計算: MEMORY_TARGET=SGA_TARGET+GREATEST(PGA_AGGREGATE_TARGET,"maximumPGAallocated");
下面的查詢語句向你展示有關的資訊,以及如何計算出需要的值:
1.SELECT name, value
FROM v$parameter
WHERE name IN ('pga_aggregate_target', 'sga_target')
UNION
SELECT 'maximum PGA allocated' AS name, TO_CHAR(value) AS value
FROM v$pgastat
WHERE name = 'maximum PGA allocated';
2.SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target
FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'sga_target') sga,
(SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'pga_aggregate_target') pga,
(SELECT value FROM v$pgastat WHERE name = 'maximum PGA allocated') max_pga;
除現有的用於記憶體管理的V$檢視外,Oracle 11g還新增加了下面4個檢視用於自動記憶體管理:
V$MEMORY_CURRENT_RESIZE_OPS
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
V$MEMORY_TARGET_ADVICE
為每個動態元件分配的記憶體大小使用檢視V$MEMORY_DYNAMIC_COMPONENTS顯示:
SELECT component, current_size, min_size, max_size
FROM v$memory_dynamic_components
WHERE current_size != 0;
V$MEMORY_CURRENT_RESIZE_OPS和V$MEMORY_RESIZE_OPS分別顯示了元件當前改變大小操作的資訊和上一次改變大小操作的資訊。
V$MEMORY_TARGET_ADVICE提供了幫助調整MEMORY_TARGET引數的資訊,它顯示了一段MEMORY_TARGET設定可用的範圍,根據當前的設定,估算完成當前負載所需要的DB Time值。
SELECT * FROM v$memory_target_advice ORDER BY memory_size;
下面來看看在11g 中Memory_target 設定和不設定對SGA/PGA 的影響:
如果Memory_target 設定為非0 值
1、sga_target 和 pga_aggregate_target 已經設定大小
Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和 memory_max_size 一致
2、sga_target 設定大小, pga_aggregate_target 沒有設定大小
pga_aggregate_target初始化值=memory_target-sga_target
3、sga_target 沒有設定大小, pga_aggregate_target 設定大小
sga_target 初始化值=memory_target-pga_aggregate_target
4、sga_target 和 pga_aggregate_target 都沒有設定大小
兩個值沒有最小值和預設值,Oracle 將根據資料庫執行狀況進行分配大小,但在資料庫啟動是會有一個固定比例來分配:
sga_target =memory_target *60%
pga_aggregate_target=memory_target *40%
如果Memory_target 沒有設定為0
11g 中預設為0 則初始狀態下取消了Memory_target 的作用,完全和10g 在記憶體管理上一致,完全向下相容。
1、SGA_TARGET設定值
自動調節SGA 中的shared pool,buffer cache,redo log buffer,java pool,larger pool等記憶體空間的大小。PGA 則依賴pga_aggregate_target 的大小。
2、SGA_target 和PGA_AGGREGATE_TARGET 都沒有設定
SGA 中的各元件大小都要明確設定,不能自動調整各元件大小。PGA不能自動增長和收縮
3: MEMORY_MAX_TARGET 設定而MEMORY_TARGET =0 這種情況先和10g 一樣。
在11g 中可以使用下面看各元件的值:
SQL> show parameter 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 18G
memory_target big integer 18G
parallel_servers_target integer 256
pga_aggregate_target big integer 8G
sga_target big integer 9G
如果需要監視Memory_target 的狀況則可以使用下面三個動態試圖:
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
v$memory_target_advice
一張能直觀體現10g和11g的自動記憶體管理的引數之間的關係的引數關係圖:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2137450/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何基於pfile啟動oracle11g全自動記憶體管理與memory_max_target及memory_targetOracle記憶體
- 如何啟用oracle11g的全自動記憶體管理以及計算memory_max_target及memory_targetOracle記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- Oracle11g自動記憶體管理(AMM)相關的初始化引數Oracle記憶體
- 自動記憶體管理記憶體
- oracle的自動記憶體管理Oracle記憶體
- 關於autoreleasepool記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 記憶體自動管理與手動管理記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 記憶體管理中關於記憶體每次增長的大小記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-關於記憶體管理Oracle記憶體
- 將手動記憶體管理變為自動管理記憶體 ORACLE 11G記憶體Oracle
- JVM學習-自動記憶體管理JVM記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 11g的MEMORY_TARGET和MEMORY_MAX_TARGET
- 關於memory_max_target,memory_target,sga_max_size,sga_target
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- ORACLE11G記憶體管理引數Oracle記憶體
- oracle 11g自動記憶體管理Oracle記憶體
- JVM自動記憶體管理機制 二JVM記憶體
- 開啟oracle記憶體自動化管理Oracle記憶體
- oracle 10g 自動共享記憶體管理Oracle 10g記憶體
- 關於虛擬機器記憶體和JVM記憶體設定的思考虛擬機記憶體JVM
- 11g 自動記憶體管理先關動態效能檢視三個記憶體
- [IOS]關於Obj-C記憶體管理的規則iOSOBJ記憶體
- 動態記憶體管理記憶體
- oracle11g要求在作業系統層設定共享記憶體/dev/shm,且大於MEMORY_TARGETOracle作業系統記憶體dev
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- 關於記憶體中棧和堆的區別記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- Unix/Linux 系統自動化管理: 記憶體管理篇Linux記憶體
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- oracle 11G 自動記憶體管理設定Oracle記憶體
- Oracle9i 自動管理PGA記憶體(zt)Oracle記憶體
- 10g、11g記憶體自動管理記憶體
- oracle 11g 自動記憶體管理(其三)Oracle記憶體