oracle使用内存配置,OraclePGA内存的配置和使用

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息。在Oracle8i 中,PGA调整非常复杂,要调整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_A

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息。在Oracle8i 中,PGA调整非常复杂,要调整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、

PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息。在Oracle8i 中,PGA调整非常复杂,要调整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、 CREATE_BITMAP_AREA_SIZE等参数。在ORACLE9I中,只需要调整 PGA_AGGREGATE_TARGET。

--PGA_AGGREGATE_TARGET初始化设置

PGA_AGGREGATE_TARGET的值应该基于Oracle实例可利用内存的总量来设置,这个参数可以被动态的修改。假设Oracle实例可分配4GB的物理内存,剩下的内存分配给操作系统和其它应用程序。你也许会分配80%的可用内存给Oracle实例,即3.2G。现在必须在内存中划分SGA和PGA区域。

在OLTP系统中,典型PGA内存设置应该是总内存的较小部分(例如20%),剩下80%分配给SGA。

OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%

copyright Sqlclub

在DSS系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。

DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%

在这个例子中,总内存4GB,DSS系统,你可以设置PGA_AGGREGATE_TARGET为1600MB,OLTP则为655MB。

--配置PGA自动管理

不用重启DB,直接在线修改。

SQL> alter system set workarea_size_policy=auto scope=both;

System altered.

SQL> alter system set pga_aggregate_target=512m scope=both;

System altered.

SQL> show parameter workarea

NAME TYPE VALUE Sqlclub

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

workarea_size_policy string AUTO --这个设置成AUTO

SQL> show parameter pga

NAME TYPE VALUE

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

pga_aggregate_target big integer 536870912

SQL>

--监控自动PGA内存管理的性能

V$PGASTAT:这个视图给出了一个实例级别的PGA内存使用和自动分配的统计。 Sqlclub学习社区

SQL> set lines 256

SQL> set pages 42

SQL> SELECT * FROM V$PGASTAT;

NAME VALUE UNIT

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

aggregate PGA target parameter 536870912 bytes --当前PGA_AGGREGATE_TARGET的值

aggregate PGA auto target 477379584 bytes --当前可用于自动分配了的PGA大小,不应该比PGA_AGGREGATE_TARGET 小

内容来自Sqlclub.cn

global memory bound 26843136 bytes --自动模式下工作区域的最大大小,Oracle根据工作负载自动调整。

total PGA inuse 6448128 bytes

total PGA allocated 11598848 bytes --PGA的最大分配

Sqlclub

maximum PGA allocated 166175744 bytes

total freeable PGA memory 393216 bytes --PGA的最大空闲大小

PGA memory freed back to OS 69074944 bytes

total PGA used for auto workareas 0 bytes --PGA分配给auto workareas的大小 Sqlclub学习社区

maximum PGA used for auto workareas 1049600 bytes

total PGA used for manual workareas 0 bytes

maximum PGA used for manual workareas 530432 bytes

over allocation count 1118 --实例启动后,发生的分配次数,如果这个值大于0,就要考虑增加pga的值 copyright Sqlclub

bytes processed 114895872 bytes

extra bytes read/written 4608000 bytes

cache hit percentage 96.14 percent --命中率

16 rows selected. copyright Sqlclub

--V$PGA_TARGET_ADVICE

SQL> 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;

The output of this query might look like the following:

TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT

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

63 23 367

125 24 30

250 30 3

375 39 0

500 58 0

600 59 0

700 59 0 Sqlclub.cn

800 60 0

900 60 0

1000 61 0

1500 67 0

2000 76 0

3000 83 0

4000 85 0

可以看出当TARGET_MB 为375M是ESTD_OVERALLOC_COUNT=0,所以我们可以将PGA_AGGREGATE_TARGET设置成375M。

3pczqvp5yvq.png 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值