SGA使用情況
v$sga_current_resize_ops
v$sga_dynamic_components
v$sga_dynamic_free_memory
v$sga_resize_ops
v$sga_target_advice
v$sgainfo
v$sgastat
PGA使用情況
v$pgastat;
v$pgastat 記錄分析
aggregate PGA target parameter104857600 bytes
-----這個值等于參數PGA_AGGREGATE_TARGET的值,如果此值為0,表示禁用了PGA自動管理。
aggregate PGAauto target 75220992 bytes
-----表示PGA還能提供多少記憶體給自動運作模式,通常這個值接近pga_aggregate_target-total pga inuse.
globalmemorybound20971520 bytes
-----工作區執行的最大值,如果這個值小于1M,馬上增加PGA大小
total PGA inuse30167040 bytes
-----目前配置設定PGA的總大小,這個值有可能大于PGA,如果PGA設定太小.這個值接近select sum(pga_used_mem) from v$process.
total PGA allocated52124672 bytes
-----工作區花費的總大小
maximum PGA allocated67066880 bytes
total freeable PGAmemory0 bytes ----沒有了空閑的PGA
processcount23----目前一個有23個process
max processes count25
PGAmemory freed back to OS 0 bytes
total PGA usedforauto workareas 8891392 bytes
maximum PGA usedforauto workareas 22263808 bytes
total PGA usedformanual workareas 0 bytes ---為0自動管理
maximum PGA usedformanual workareas 0 bytes ---為0自動管理
over allocation count0
--如果PGA設定太小,導緻PGA有時大于PGA_AGGREGATE_TARGET的值,此處為0,說明PGA沒有擴充大于TARGET的值,如果此值出現過,那麼增加PGA大小。
bytes processed124434432 bytes
extra bytesread/written0 bytes
cache hit percentage 100percent
---命中率為100%,如果太小增加PGA
PGA建議值
SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc, ESTD_OVERALLOC_COUNT FROM v$pga_target_advice;
SGA建議值
select * from v$sga_target_advice;
附:oracle SGA與PGA差別:
SGA:是用于存儲資料庫資訊的記憶體區,該資訊為資料庫程序所共享。它包含Oracle伺服器的資料和控制資訊,它是在Oracle伺服器所駐留的計算機的實際記憶體中得以配置設定,如果實際記憶體不夠再往虛拟記憶體中寫。
PGA:包含單個伺服器程序或單個背景程序的資料和控制資訊,與幾個程序共享的SGA正相反,PGA是隻被一個程序使用的區域,PGA在建立程序時配置設定,在終止程序時回收。
----目前一個process消耗最大的記憶體
select max(pga_used_mem)/1024/1024M from v$process;
----目前process一共消耗的PGA
select sum(pga_used_mem)/1024/1024from v$process;
如何設定PGA
在壓力測試階段,模拟一下系統的運作,然後運作
select(select sum(pga_used_mem)/1024/1024 from v$process)/(select count(*) from v$process)from dual;
得到一個process大約占用了多少的記憶體,然後估算系統一共會有多少連接配接,比如一共有500個連接配接,
那麼sessions=1.1*process+5=500,那麼processes=450,
再乘以一個process需要消耗的記憶體,就能大約估算出PGA需要設定多大。
EG = 1.1 * 450 = 495M估算的大一點550M就OK樂
最好将PGA設定的值比計算出的值大一點,PGA值設定好後,就可以根據系統的性質,如果系統為OLTOP,那麼總的記憶體可以設定為PGA/0.16,最後也能估算出SGA的大小,建議還是多配點記憶體。
關于一個process能夠配置設定的最大記憶體(串行操作)的規則:
10gR1之前,對于串行操作(非并行)一個process能夠配置設定的最大的記憶體為min(5%pga_aggregate_target,100m)
10gR2之後,對于串行操作(非并行)一個process能夠配置設定的最大記憶體有如下規則:
如果pga_aggregate_target<=500m,那麼最大的記憶體為20%*pga_aggregate_target.
如果500m<pga_aggregate_target<=1000m,那麼最大記憶體為100m.
如果1000m<pga_aggregate_target<=2.5G,那麼最大記憶體為10%*pga_aggregate_target.
如果pga_aggregate_target>2.5G,那麼最大記憶體為2.5G.
SQL>SELECT x.ksppinmNAME, y.ksppstvlVALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y WHERE x.inst_id=USERENV('Instance')
AND y.inst_id=USERENV('Instance')AND x.indx= y.indxAND x.ksppinmLIKE'%&par%'
V$bh、x$bh記錄了資料塊在databuffer中緩沖的情況,通過這個視圖可以找系統中的熱點塊。
通過下面語句找系統中top10熱點快所在的熱點對象:
Select owner,object_name from dba_objects Where data_object_id in (select obj from (select obj from x$bh order by tch desc) t Where rownum<11);