Oracle性能优化之内存管理

  Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA)。前者专门供每个会话使用,后者由所有Oracle进程共享。

  对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供的建议方案,如下:

  1.对于OLTP系统
        PGA_AGGREGATE_TARGET  = (<Total Physical Memory > * 80%) * 20%   2.对于DSS系统
        PGA_AGGREGATE_TARGET  = (<Total Physical Memory > * 80%) * 50%

  注:OLTP与DSS区别,可参考链接:https://blog.csdn.net/MyySophia/article/details/78843208

  也就是说,对于一个单纯的数据库服务器,通常我们需要保留20%的物理内存给操作系统使用,剩余80%可以分配给Oracle使用。Oracle使用的内存分为两部分SGA和PGA,那么PGA可以占用Oracle消耗总内存的20%(OLTP系统)至50%(DSS/OLAP系统)。

  当然,这只是一个建议设置,更进一步的我们应该根据数据库的具体性能指标来调整和优化内存的使用。

   今日也特意咨询公司性能调优部的一位性能调优专家:根据本公司业务实践经验,通常将Oracle内存调整如下: 

pga_aggregate_target =物理内存大小的20%
sga_target =物理内存大小的60%
sga_max_size =物理内存大小的60%

   Get!


内存设置方法如下:

1. 调整PGA内存的参考命令如下:

alter system set workarea_size_policy=auto SCOPE=SPFILE; #默认auto,表示Oracle可以根据需要,将PGA分配给会话,同时力求将PGA分配总量保持在pga_aggregate_target范围内
alter system set pga_aggregate_target=物理内存大小的20% SCOPE=SPFILE;

2. 调整SGA内存的参考命令如下:

ALTER SYSTEM SET SGA_TARGET=物理内存大小的60% SCOPE=SPFILE;
ALTER SYSTEM SET SGA_MAX_SIZE=物理内存大小的60% SCOPE=SPFILE;

  在上述命令中:

  SCOPE指的是修改范围,一共有三个值分别是SPFILE,BOTH和MEMORY

  SPFILE:指修改服务器参数文件中的数据。

  MEMORY:指修改内存中的数据,对于要重启数据库才生效的参数,该值不可用

  BOTH:指同时修改服务器参数文件和内存中的数据。

在修改以上两个值时需要注意,SGA_MAX_SIZE必须大于或者等于SGA_TARGET

3. 重启数据库

SQL> shutdown immediate
SQL> startup

查看Oracle内存使用情况: 

1. 查看当前系统PGA的信息

SELECT * FROM V$PGASTAT;

2. 查看当前系统SGA的信息

select name,bytes/1024/1024 as "Size(M)" from v$sgainfo;

3. PGA、SGA应用状况查询

select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from

(select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,

(select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual)

union

select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from (

select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total,

(select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值