Oracle9i引入pga_aggregate_target,可以自動(dòng)對(duì)PGA進(jìn)行調(diào)整;
Oracle10引入sga_target,可以自動(dòng)對(duì)SGA進(jìn)行調(diào)整。
Oracle11g則對(duì)這兩部分進(jìn)行綜合,引入memory_target,可以自動(dòng)調(diào)整所有的內(nèi)存,這就是新引入的自動(dòng)內(nèi)存管理特性。
下面我們通過以下的幾個(gè)命令來讓大家清楚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ù)后,實(shí)際上Oracle會(huì)自動(dòng)設(shè)置并調(diào)整以下兩個(gè)參數(shù)來分配SGA和PGA的內(nèi)存,這和Oracle10g自動(dòng)設(shè)置sga_target后分配db_cache_size和shared_pool_size的機(jī)制是一樣的
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無(wú)法啟動(dòng),報(bào)ORA-00845錯(cuò)誤
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
這個(gè)錯(cuò)誤有點(diǎn)誤導(dǎo),實(shí)際上這并不是說該平臺(tái)版本上不支持AMM特性,只是設(shè)置的memory_max_target超過了系統(tǒng)中設(shè)置的share memory(/dev/shm)而已。在Oracle11g for linux中似乎使用了一種新的機(jī)制來管理共享內(nèi)存段,而不是傳統(tǒng)的sys /dev/shm了。在alert.ora中可以找到更準(zhǔn)確的錯(cuò)誤描述
解決這個(gè)問題的辦法之一是增加tmpfs文件系統(tǒng)的容量。
修改/etc/fstab中tmpfs對(duì)應(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"命令檢查變化。
修改實(shí)例的MEMORY_TARGET參數(shù)。(這個(gè)在數(shù)據(jù)庫(kù)關(guān)著的時(shí)候是行不能通的,用上面的那種比較徹底)
這個(gè)方法用alter system set memory_target=200M;
本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|