1

我附上了来自我们的服务器的 AWR 报告的输出,该服务器遇到了性能问题。

附件是来自 AWR 报告的 PGA 咨询。

是否说明PGA短缺?

在此处输入图像描述

4

1 回答 1

1

PGA 内存顾问报告暗示了两件事:

  1. 更改 的值PGA_AGGREGATE_TARGET不会提高性能。
  2. 有一个内存问题值得研究。

提高性能

PGA_AGGREGATE_TARGET根据“估计时间”列,从当前值 9600 MB更改对性能的影响不到 1% 。如果内存缩小到当前值的 13% 或增加到当前值的 800%,则总 DB 时间或“Estd Time”几乎不会改变。

通常,如果 Oracle 认为数据库时间不会改善,那么更改某些内容是没有意义的。 但是,在这种情况下,发生了一些奇怪的事情。

估计的 PGA 过度分配计数

您的数据库中的某些内容占用了过多的 PGA 内存。

该参数PGA_AGGREGATE_TARGET旨在控制可用于排序和散列等操作的内存量。PGA 的其他用途可能会迫使系统超出该目标。报告列“Estd PGA Overaloc Count”暗示数据库中的某些内容占用了超过 28800 MB 的内存。您可能想找到那个记忆猪;消除它可能会释放内存,从而以其他方式间接提高性能。

使用以下两个查询来查找当前和历史 PGA 内存问题。我的猜测是系统有太多的连接或者会话正在做一些愚蠢的事情,比如将巨大的表加载到内存中BULK COLLECT。你会想要找到有问题的会话,然后准确地找出他们正在做什么而消耗了这么多内存。

--PGA in current sessions:
select inst_id, sid, round(value/1024/1024) mb
from gv$sesstat
join v$statname on gv$sesstat.statistic# = v$statname.statistic#
where name = 'session pga memory'
order by value desc, sid;

--PGA allocated in historical sessions.
select round(pga_allocated/1024/1024/1024, 1) gb, gv$active_session_history.*
from gv$active_session_history
where pga_allocated is not null
order by pga_allocated desc;
于 2019-03-08T06:12:07.480 回答