Отчет PGA Memory Advisor подразумевает две вещи:
- Изменение значения
PGA_AGGREGATE_TARGET
не приведет к повышению производительности. - Существует проблема с памятью, которую стоит изучить.
Улучшение производительности
Согласно столбцу «Предполагаемое время» изменение производительности 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;