视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
OraclePGA内存的配置和使用
2020-11-09 08:30:23 责编:小采
文档


欢迎进入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 48128 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 1145872 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。

下载本文
显示全文
专题