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 →