oracle 11g 自動記憶體管理(其三)
ORACLE 11g
自動記憶體管理:
在oracle
11g中,使用一個引數memory_target就能夠實現SGA和PGA元件依據工作負荷進行自動記憶體分配。oracle推薦使用自動記憶體管理簡化記憶體分配。
oracle 11g依然支援手工記憶體分配:
1:oracle 11g使用memory_target來支援記憶體自動分配。
2:使用sga_target和pga_target引數來設定SGA和PGA,資料庫會在這兩個元件中自我最佳化。
3:你也可以手工設定SGA中的各個元件。比如db_cache_size,shared_pool_size等元件。
oracle 11g中新的記憶體初始化引數:
有兩個新的關鍵的記憶體初始化引數memory_target(這個引數設定分配給例項的記憶體數)和memory_max_size(這個引數是可選的,設定例項能夠分配的最大記憶體,設定的是memory_target的上限值)。
memory_max_size引數是靜態,然而memory_target是動態的。因此你可以調整memory_target引數值的大小,但上限是memory_max_size。
對自動記憶體管理的配置有兩種情況,在建立資料庫時或者是建立資料庫後。
1:在資料庫建立期間設定自動記憶體管理:如果是手工建庫,那麼你只需要設定好如下類似初始化引數即可:
memory_target = 1000m
memory_max_target = 1500m
如果是採用DBCA建立資料庫,如果是建立新庫並且是高階安裝,你能選擇自動記憶體管理選項。如果是選擇基本安裝,那麼預設就是自動記憶體管理。
memory_target = 1000m
memory_max_target = 1500m
如果是採用DBCA建立資料庫,如果是建立新庫並且是高階安裝,你能選擇自動記憶體管理選項。如果是選擇基本安裝,那麼預設就是自動記憶體管理。
2:在資料庫建立後:你可以在資料庫建立後新增memory_max_target和memory_target.雖然memory_target是一個動態引數,但是當資料庫執行時,你不能交換到自動記憶體管理。必須重啟資料庫將引數應用到例項啟動過程才行。
實現自動記憶體管理,有下列原則:
MEMORY_TARGET 設定為非零值時:
1:如果設定了SGA_TARGET 和 PGA_AGGREGATE_TARGET,則會分別將它們當作 SGA大小和 PGA 大小的最小 值。MEMORY_TARGET 可以將
SGA_TARGET PGA_AGGREGATE_TARGET 的值作為 MEMORY_MAX_SIZE。
2:如果設定了 SGA_TARGET 但未設定PGA_AGGREGATE_TARGET,則仍會自動最佳化這兩個引數。PGA_AGGREGATE_TARGET 將初始化為以下值:(MEMORY_TARGET -SGA_TARGET)。
3:如果設定了 PGA_AGGREGATE_TARGET 但未設定 SGA_TARGET,則仍會自動最佳化這兩個引數。SGA_TARGET 將初始化為值 min(MEMORY_TARGET -PGA_AGGREGATE_TARGET, SGA_MAX_SIZE(如果使用者已設定)),系統將自動最佳化子元件。
4:如果未設定任何引數,則無需最小值或預設值即可自動最佳化這兩個引數。有這樣一個策略:在初始化過程中,將伺服器的總記憶體按固定比率分配給SGA 和 PGA。該策略將在啟動時分配 60% 的記憶體給SGA,40% 的記憶體給 PGA。如果未設定 MEMORY_TARGET,或者將其顯式設定為 0(11g 中的預設值為 0):
5:如果設定了 SGA_TARGET,則系統僅自動最佳化 SGA 的子元件大小。PGA 的自動最佳化與是否顯式設定 PAG 無關。但是,不會自動最佳化整個SGA (SGA_TARGET) 和 PGA (PGA_AGGREGATE_TARGET),即 SGA 和PGA 不會自動增長或收縮。如果既未設定SGA_TARGET,又未設定 PGA_AGGREGATE_TARGET,則遵從當前的策略:自動最佳化PGA,但不自動最佳化SGA;必須顯式設定部分子元件的引數(對於SGA_TARGET)。
6: 如果僅設定了 MEMORY_MAX_TARGET,則使用文字初始化檔案進行手動設定時,MEMORY_TARGET 預設為 0。SGA 和 PGA 的自動最佳化行為預設情況下與 10g R2 中的相同。
7:如果 SGA_MAX_SIZE 不是使用者設定的,則在使用者設定了 MEMORY_MAX_TARGET 的情況下,系統會在內部將其設定為 MEMORY_MAX_TARGET(與使用者是否設定SGA_TARGET 無關)。<wbr><wbr>
1:如果設定了SGA_TARGET 和 PGA_AGGREGATE_TARGET,則會分別將它們當作 SGA大小和 PGA 大小的最小
2:如果設定了 SGA_TARGET 但未設定PGA_AGGREGATE_TARGET,則仍會自動最佳化這兩個引數。PGA_AGGREGATE_TARGET 將初始化為以下值:(MEMORY_TARGET -SGA_TARGET)。
3:如果設定了 PGA_AGGREGATE_TARGET 但未設定 SGA_TARGET,則仍會自動最佳化這兩個引數。SGA_TARGET 將初始化為值 min(MEMORY_TARGET -PGA_AGGREGATE_TARGET, SGA_MAX_SIZE(如果使用者已設定)),系統將自動最佳化子元件。
4:如果未設定任何引數,則無需最小值或預設值即可自動最佳化這兩個引數。有這樣一個策略:在初始化過程中,將伺服器的總記憶體按固定比率分配給SGA 和 PGA。該策略將在啟動時分配 60% 的記憶體給SGA,40% 的記憶體給 PGA。如果未設定 MEMORY_TARGET,或者將其顯式設定為 0(11g 中的預設值為 0):
5:如果設定了 SGA_TARGET,則系統僅自動最佳化 SGA 的子元件大小。PGA 的自動最佳化與是否顯式設定 PAG 無關。但是,不會自動最佳化整個SGA (SGA_TARGET) 和 PGA (PGA_AGGREGATE_TARGET),即 SGA 和PGA 不會自動增長或收縮。如果既未設定SGA_TARGET,又未設定 PGA_AGGREGATE_TARGET,則遵從當前的策略:自動最佳化PGA,但不自動最佳化SGA;必須顯式設定部分子元件的引數(對於SGA_TARGET)。
6: 如果僅設定了 MEMORY_MAX_TARGET,則使用文字初始化檔案進行手動設定時,MEMORY_TARGET 預設為 0。SGA 和 PGA 的自動最佳化行為預設情況下與 10g R2 中的相同。
7:如果 SGA_MAX_SIZE 不是使用者設定的,則在使用者設定了 MEMORY_MAX_TARGET 的情況下,系統會在內部將其設定為 MEMORY_MAX_TARGET(與使用者是否設定SGA_TARGET 無關)。<wbr><wbr>
在有些場合,如果你使用自動記憶體管理給例項分配記憶體,可能會遇到下列錯誤,比如linux上:
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
這是因為/dev/shm沒有設定正確的值,確保這個值至少等於sga_max_size引數值。
[oracle@node1 dbs]$ df -h
Filesystem
Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
14G 9.4G 3.2G
75% /
/dev/sda1
99M
14M 81M 15%
/boot
none
2.0G 702M
1.4G 35% /dev/shm
可以看到該值為2G。
可以透過/etc/fstab來更改該值:
預設情況下該檔案相關內容如下:
[oracle@node1 dbs]$ cat /etc/fstab |grep shm
none
/dev/shm
tmpfs
defaults
0 0<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>
Filesystem
/dev/mapper/VolGroup00-LogVol00
/dev/sda1
none
可以看到該值為2G。
可以透過/etc/fstab來更改該值:
預設情況下該檔案相關內容如下:
[oracle@node1 dbs]$ cat /etc/fstab |grep shm
none
可以將該值修改為如下:
none
/dev/shm
tmpfs
defaults,size=2G
0 0
然後重啟系統即可解決問題。
轉自:http://blog.chinaunix.net/uid-16728139-id-3172139.html
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>
none
然後重啟系統即可解決問題。
轉自:http://blog.chinaunix.net/uid-16728139-id-3172139.html
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>
相關文章
- oracle 11g自動記憶體管理Oracle記憶體
- 將手動記憶體管理變為自動管理記憶體 ORACLE 11G記憶體Oracle
- oracle 11G 自動記憶體管理設定Oracle記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Oracle 記憶體自動管理--關閉自動管理Oracle記憶體
- oracle的自動記憶體管理Oracle記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- oracle 11G 自動記憶體管理設定修改為手功管理Oracle記憶體
- 10g、11g記憶體自動管理記憶體
- 自動記憶體管理記憶體
- 開啟oracle記憶體自動化管理Oracle記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- oracle 10g 自動共享記憶體管理Oracle 10g記憶體
- 記憶體自動管理與手動管理記憶體
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- Oracle9i 自動管理PGA記憶體(zt)Oracle記憶體
- JVM學習-自動記憶體管理JVM記憶體
- 11g 自動記憶體管理先關動態效能檢視三個記憶體
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- Oracle 記憶體管理Oracle記憶體
- JVM自動記憶體管理機制 二JVM記憶體
- Oracle 11G 記憶體內部管理全攻略Oracle記憶體
- 動態記憶體管理記憶體
- Unix/Linux 系統自動化管理: 記憶體管理篇Linux記憶體
- Oracle 記憶體管理方式Oracle記憶體
- 記憶體管理 記憶體管理概述記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-關於記憶體管理Oracle記憶體
- Windows下Oracle 11G記憶體修改WindowsOracle記憶體
- ORACLE記憶體管理 之一 ORACLE PGAOracle記憶體
- golang手動管理記憶體Golang記憶體
- oracle 11g 啟用自動記憶體管理時sga_max 這個引數設定的意義不大Oracle記憶體
- ASMM (Auto Shared Memory Manangement) 自動共享記憶體管理ASMNaN記憶體
- 解析Java物件引用與JVM自動記憶體管理(轉)Java物件JVM記憶體
- ORACLE 記憶體管理 之四 SGAOracle記憶體
- oracle記憶體結構與管理Oracle記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- Oracle11g自動記憶體管理(AMM)相關的初始化引數Oracle記憶體