ORACLE 記憶體管理 之二 PGA v$pgastat

weifenghq發表於2007-01-05

ORACLE 記憶體管理 PGA v$pgastat

  • PGA 自動管理

需要設定兩個基本點引數 :

WORKAREA_SIZE_POLICY=AUTO,預設就是AUTO

PGA_AGGREGATE_TARGET總的PGA的大小

注意,9Ishared server連線需要明確設定SORT_AREA_SIZE HASH_AREA_SIZE,也就是說不能用自動管理模式。10G則無此限制。

PGA_AGGREGATE_TARGET是一個上限(理論上的最大值,PL/SQL就很容易超過),ORACLE啟動時並不分配那麼多,你甚至可以設定大於物理MEM的大小(生產庫不要這麼做呀,要設定pga_aggregate_target+sga,別挑戰ORACLE的極限)。一個SESSION可能有多個sort,hashworkarea,每一個workarea最多會用到5%100M(由兩個隱藏引數控制),因此如果預計每個sort,hashworkarea5M,應該設定PGA_AGGREGATE_TARGET100M。但是,隨著使用者的增加或工作量的增大,給每個workarea的容量可能會減少,因為有總量PGA_AGGREGATE_TARGET的限制,比如需要100workarea,那麼每個只能分配到1Mparallel query會用到最多30%(由隱藏引數控制)PGA_AGGREGATE_TARGET,每一個parallel queryPIECE會分配相應的30%,也就是parallel query可能會用到30M10PARALLEL,那麼每個用3M。這也就是建議用auto管理的原因,一個系統通常workload,session是隨時間變化的,早上可能3個使用者,中午可能300個使用者,所以用固定sort,hash的引數是不合時宜的.自動管理才可以實現在使用者併發少的時候分配更多的記憶體,在併發多的時候照顧大眾,分配少的記憶體。ORACLE 9.2以後有了PGA advisory

  • v$pgastat

SQL> show parameter pga

NAME TYPE VALUE

------------------------------------ ---------------------- ------------------------------

pga_aggregate_target big integer 105906176

SQL> show parameter workarea

NAME TYPE VALUE

------------------------------------ ---------------------- ----------

workarea_size_policy string AUTO

1 select name||' '||

2 to_char(decode( unit,

3 'bytes', value/1024/1024,

4 value ),'999,999,999.9')||' '||

5 decode( unit, 'bytes', 'mbytes', unit )

6* from v$pgastat

SQL> /

NAME||''||TO_CHAR(DECODE(UNIT,'BYTES',VALUE/1024/1024,VALUE),'999,999,999.9')||''||DECODE(UNIT,'BYTE

----------------------------------------------------------------------------------------------------

aggregate PGA target parameter 101.0 mbytes

aggregate PGA auto target 74.1 mbytes

global memory bound 5.0 mbytes

total PGA inuse 22.0 mbytes

total PGA allocated 33.2 mbytes

maximum PGA allocated 33.4 mbytes

total freeable PGA memory .0 mbytes

PGA memory freed back to OS .0 mbytes

total PGA used for auto workareas 3.3 mbytes

maximum PGA used for auto workareas 4.8 mbytes

total PGA used for manual workareas .0 mbytes

maximum PGA used for manual workareas 3.6 mbytes

over allocation count .0

bytes processed 1,545.8 mbytes

extra bytes read/written 75.1 mbytes

cache hit percentage 95.4 percent

解釋

aggregate PGA auto target 74.1 mbytes,可以使用的PGA,也就是說剩餘的PGA

total PGA inuse 22.0 mbytes 現在使用的PGA

over allocation count .0 ORACLE分配的PGA超過pga_aggregate_target 的次數.這個引數可以判斷pga_aggregate_target 是否設定的太小.

cache hit percentage 95.4 percent 自從instance啟動後的PGA 命中率,如果所有的操作都在MEM中進行沒有在TEMP裡執行的話應該是100%.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-888420/,如需轉載,請註明出處,否則將追究法律責任。

相關文章