Открыть сервис

V$PGASTAT

V$PGASTAT — это динамическое представление производительности (Dynamic Performance View) в системе управления базами данных Oracle Database, предназначенное для отображения статистической информации об использовании Program Global Area (PGA). Представление содержит агрегированные и текущие данные о выделении, освобождении и потреблении памяти в PGA для всех серверных процессов, работающих с экземпляром базы данных.

Назначение и область применения

V$PGASTAT используется администраторами баз данных (DBA) для мониторинга и диагностики работы с памятью в режиме реального времени. Оно предоставляет информацию, необходимую для оценки эффективности автоматического управления памятью PGA (Automatic PGA Memory Management), выявления утечек памяти, анализа производительности сортировок, хеш-соединений и других операций, интенсивно использующих PGA. Данные из V$PGASTAT также применяются при настройке параметров инициализации PGA_AGGREGATE_TARGET и PGA_AGGREGATE_LIMIT.

Структура и ключевые столбцы

Представление V$PGASTAT содержит несколько строк, каждая из которых описывает определённый аспект статистики PGA. Основные столбцы:

  • NAME — название статистического показателя (например, aggregate PGA target parameter, total PGA allocated).
  • VALUE — числовое значение показателя в байтах (если применимо).
  • UNIT — единица измерения (например, bytes, bytes/second, count).
  • CON_ID — идентификатор контейнера (для многопользовательской архитектуры Oracle Multitenant).

Основные статистические показатели

V$PGASTAT включает несколько десятков показателей. Наиболее важные из них:

Параметры и лимиты

  • aggregate PGA target parameter — текущее значение параметра PGA_AGGREGATE_TARGET, установленного в экземпляре. Определяет целевой объём памяти, доступной для PGA.
  • aggregate PGA auto target — целевой объём памяти, который автоматически выделяется для рабочих областей (work areas) при автоматическом управлении PGA. Рассчитывается как часть от PGA_AGGREGATE_TARGET за вычетом фиксированных затрат.
  • global memory bound — максимальный объём памяти, который может быть выделен одному рабочему процессу для выполнения операции (например, сортировки). Зависит от текущей загрузки системы.
  • total PGA allocated — общий объём памяти, выделенной в данный момент всем процессам PGA. Включает как фиксированные, так и рабочие области.
  • total PGA used by work areas — объём памяти, используемый рабочими областями (сортировка, хеш-соединения, битмап-операции).
  • total PGA freeable by processes — объём памяти, который может быть освобождён процессами без потери данных (например, кэшированные данные, которые могут быть сброшены).

Статистика операций

  • over allocation count — количество случаев, когда суммарное выделение PGA превысило значение PGA_AGGREGATE_LIMIT. При превышении Oracle может принудительно завершать процессы с наибольшим потреблением памяти.
  • bytes processed — общий объём данных, обработанных через PGA (например, количество байт, прочитанных или записанных в ходе сортировок).
  • extra bytes read/written — объём данных, выгруженных на диск из-за нехватки памяти в PGA (например, сортировка с использованием временного табличного пространства).
  • cache hit percentage — процент операций, выполненных полностью в памяти (без выгрузки на диск). Высокое значение (обычно >90%) свидетельствует о достаточном объёме PGA.

Дополнительные показатели

  • maximum PGA allocated — максимальный объём PGA, выделенный с момента запуска экземпляра.
  • maximum PGA used by work areas — максимальный объём памяти, использованный рабочими областями.
  • total PGA inuse — объём памяти, занятой процессами и не освобождённой (включая память, выделенную под сессии, курсоры, PL/SQL-пакеты).
  • total PGA allocated for auto workareas — объём памяти, выделенный автоматически для рабочих областей.
  • total PGA allocated for manual workareas — объём памяти, выделенный для рабочих областей в ручном режиме (при отключённом автоматическом управлении).

Использование для диагностики

Проверка эффективности управления PGA

Для оценки эффективности автоматического управления PGA администратор может выполнить запрос:

``sql SELECT name, value, unit FROM v$pgastat WHERE name IN ('aggregate PGA target parameter', 'total PGA allocated', 'total PGA used by work areas', 'cache hit percentage'); ``

Если cache hit percentage ниже 90%, это может указывать на недостаточный размер PGA_AGGREGATE_TARGET. Если total PGA allocated постоянно превышает aggregate PGA auto target, возможно, требуется увеличение лимита.

Выявление перегрузки

При превышении PGA_AGGREGATE_LIMIT (показатель over allocation count > 0) Oracle может принудительно завершать процессы. В этом случае администратору следует проанализировать, какие процессы потребляют наибольший объём PGA, используя представление V$PROCESS или V$SQL_WORKAREA.

Мониторинг выгрузки на диск

Показатели extra bytes read/written и bytes processed позволяют оценить, сколько данных было выгружено на диск из-за нехватки памяти. Высокое отношение extra bytes к bytes processed свидетельствует о неэффективном использовании PGA.

Примеры запросов

Получение всех показателей

``sql SELECT name, value, unit FROM v$pgastat ORDER BY name; ``

Проверка превышения лимита

``sql SELECT name, value, unit FROM v$pgastat WHERE name = 'over allocation count'; ``

Анализ использования памяти рабочими областями

``sql SELECT name, value, unit FROM v$pgastat WHERE name LIKE '%work area%' OR name LIKE '%workarea%'; ``

Ограничения

  • V$PGASTAT отображает данные только для текущего экземпляра. В кластерной среде Oracle RAC необходимо подключаться к каждому экземпляру отдельно.
  • Представление доступно только пользователям с привилегией SELECT ANY DICTIONARY или SELECT_CATALOG_ROLE.
  • Значения обновляются в реальном времени, но с некоторой задержкой (обычно не более нескольких секунд).

Связь с другими представлениями

  • V$PGA_TARGET_ADVICE — предоставляет рекомендации по оптимальному значению PGA_AGGREGATE_TARGET на основе исторических данных.
  • V$PROCESS — содержит информацию о каждом процессе, включая объём выделенной PGA.
  • V$SQL_WORKAREA — отображает статистику использования рабочих областей для каждого SQL-запроса.
  • V$SYSSTAT — содержит системные статистики, в том числе связанные с PGA (например, physical reads и physical writes для временных табличных пространств).

Источники

  • Oracle Database SQL Language Reference, 19c — раздел «Dynamic Performance Views» (V$PGASTAT).
  • Oracle Database Performance Tuning Guide, 19c — глава «Managing PGA Memory».
  • Oracle Database Administrator’s Guide, 19c — раздел «Monitoring PGA Memory Usage».
  • Документация Oracle по автоматическому управлению памятью PGA (Automatic PGA Memory Management).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →