Oracle9i引入pga_aggregate_target,可以自動對PGA進(jìn)行調(diào)整;
Oracle10引入sga_target,可以自動對SGA進(jìn)行調(diào)整。
Oracle11g則對這兩部分進(jìn)行綜合,引入memory_target,可以自動調(diào)整所有的內(nèi)存,這就是新引入的自動內(nèi)存管理特性。
下面我們通過以下的幾個命令來讓大家清楚memory_target 的設(shè)置與PGA與SGA的關(guān)系:-
SQL> alter system set memory_target=200m scope=spfile;
System altered.
SQL> alter system set sga_target=0 scope=spfile;
System altered.
SQL> alter system set pga_aggregate_target=0 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
Oracle instance shut down.
SQL> startup
Oracle instance started.
Total System Global Area 209235968 bytes
Fixed Size 1298920 bytes
Variable Size 150998552 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
Database mounted.
Database opened.
設(shè)置memory_target參數(shù)后,實際上Oracle會自動設(shè)置并調(diào)整以下兩個參數(shù)來分配SGA和PGA的內(nèi)存,這和Oracle10g自動設(shè)置sga_target后分配db_cache_size和shared_pool_size的機制是一樣的
SQL> select a.ksppinm name,b.ksppstvl value
2 from x$ksppi a,x$ksppcv b
3 where a.indx=b.indx
4 and (a.ksppinm like '%sga_target%'
5 or a.ksppinm like '%pga_aggregate_target%');
NAME VALUE
---------------------------------------- ------------------------------
sga_target 0
__sga_target 125829120
pga_aggregate_target 0
__pga_aggregate_target 79691776
下面我們了解一下ORA-00845的由來與解決方案:
如果memory_max_target/memory_target設(shè)置過大,可能導(dǎo)致instance無法啟動,報ORA-00845錯誤
SQL> alter system set memory_max_target=300m scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
Oracle instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
這個錯誤有點誤導(dǎo),實際上這并不是說該平臺版本上不支持AMM特性,只是設(shè)置的memory_max_target超過了系統(tǒng)中設(shè)置的share memory(/dev/shm)而已。在Oracle11g for linux中似乎使用了一種新的機制來管理共享內(nèi)存段,而不是傳統(tǒng)的sys /dev/shm了。在alert.ora中可以找到更準(zhǔn)確的錯誤描述
解決這個問題的辦法之一是增加tmpfs文件系統(tǒng)的容量。
修改/etc/fstab中tmpfs對應(yīng)的行,
將原來的 tmpfs /dev/shm tmpfs defaults 0 0
改成 tmpfs /dev/shm tmpfs defaults,size=1024M 0 0 ,這樣tmpfs增大為1G
size參數(shù)也可以用G作單位:size=1G。
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm
馬上可以用"df -h"命令檢查變化。
修改實例的MEMORY_TARGET參數(shù)。(這個在數(shù)據(jù)庫關(guān)著的時候是行不能通的,用上面的那種比較徹底)
這個方法用alter system set memory_target=200M;
本文出自:億恩科技【www.cmtents.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|