oracle 内存使用情况


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----当前一个有23process

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 SGAPGA区别:

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA是只被一个进程使用的区域,PGA在创建进程时分配,在终止进程时回收。


----当前一个process消耗最大的内存

select max(pga_used_mem)/1024/1024from 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估算的大一点550MOK


最好将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$bhx$bh记录了数据块在databuffer中缓冲的情况,通过这个视图可以找系统中的热点块。

通过下面语句找系统中top10热点快所在的热点对象:

Select /*+ rule*/ 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);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值