Настройка PGA_AGGREGATE_TARGET в 11.2 - PullRequest
1 голос
/ 08 марта 2019

Я приложил вывод отчета AWR с нашего сервера, на котором возникли проблемы с производительностью.

Прикреплено сообщение PGA Advisory из отчета AWR.

Указывает ли это на недостаток PGA?

enter image description here

1 Ответ

0 голосов
/ 08 марта 2019

Отчет PGA Memory Advisor подразумевает две вещи:

  1. Изменение значения PGA_AGGREGATE_TARGET не приведет к повышению производительности.
  2. Существует проблема с памятью, которую стоит изучить.

Улучшение производительности

Согласно столбцу «Предполагаемое время» изменение производительности PGA_AGGREGATE_TARGET от текущего значения 9600 МБ составляет менее 1%.Общее время БД, или «Время начала», практически не изменится, если объем памяти уменьшится до 13% от текущего значения или увеличится до 800% от текущего значения.

Обычно, если Oracle не думаетвремя БД улучшится нет смысла что-то менять. Но , в этом случае происходит что-то странное.

Расчетное количество перераспределений PGA

Что-то в вашей базе данных использует слишком много памяти PGA.

Параметр PGA_AGGREGATE_TARGET предназначен для управления объемом памяти, доступным для таких операций, как сортировка и хеширование.Есть и другие варианты использования PGA, которые могут заставить систему превысить эту цель.В столбце отчета «Количество подсчетов Estd PGA» подразумевается, что что-то в базе данных занимает более 28800 МБ памяти.Возможно, вы захотите найти эту память свинья;его устранение может освободить память, что может косвенным образом повысить производительность каким-либо другим способом.

Используйте два приведенных ниже запроса для поиска текущих и исторических проблем с памятью 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;
...