Home > Database > Mysql Tutorial > Oracle PGA内存的配置和使用

Oracle PGA内存的配置和使用

WBOY
Release: 2016-06-07 15:01:42
Original
903 people have browsed it

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

Oracle PGA内存的配置和使用

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template