在11.2中调整PGA_AGGREGATE_TARGET

时间:2019-03-07 23:09:57

标签: oracle performance awr

我已经附上了服务器的AWR报告的输出,该报告一直遇到性能问题。

随附的是AWR报告中的PGA咨询。

是否表明PGA短缺?

enter image description here

1 个答案:

答案 0 :(得分:0)

PGA Memory Advisor报告包含两点:

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