Архив на месяц Май, 2011
Знакомство с Automatic Workload Repository
Опубликовано: Май 17, 2011, категория: администрирование.
Oracle предоставляет множество инструментов для сборки информации о базе данных и предоставления отчетов на ее основании. Изначально были скрипты UTLBSTAT/UTLESTAT, которые использовались для мониторинга метрик производительности. В Oracle 8i был представлен STATPACK, его функциональность была расширена в Oracle 9i. В версии Oracle Database 10g statpack эволюционировал в Automatic Workload Repository (AWR). AWR лицензируется как часть пакета диагностики. Прежде чем его использовать убедитесь, лицензирована ли у вас эта опция. Но, в версии 10G осталась возможность использовать statpack, его функционал так же был расширен.
Рекомендовано для:
|
|
|
Oracle предоставляет множество инструментов для сборки информации о базе данных и предоставления отчетов на ее основании. Изначально были скрипты UTLBSTAT/UTLESTAT, которые использовались для мониторинга метрик производительности. В Oracle 8i был представлен STATPACK, его функциональность была расширена в Oracle 9i. В версии Oracle Database 10g statpack эволюционировал в Automatic Workload Repository (AWR). AWR лицензируется как часть пакета диагностики. Прежде чем его использовать убедитесь, лицензирована ли у вас эта опция. Но, в версии 10G осталась возможность использовать statpack, его функционал так же был расширен. AWR (Автоматический репозиторий рабочей нагрузки) основывается на похожих принципах сбора статистической информации в копии, как statspack и estat/bstat. Разница заключается в приёмах и методологии сбора информации, а также в количестве дополнительной информации. Схема работы AWRAutomatic Workload Repository представляет из себя набор внутренних таблиц словаря данных БД Oracle и специальный фоновый процесс MMON, который появился в Oracle10g. Периодически AWR создает статистическую копию (снимок) и сохраняет информацию в таблицах расположенных в табличном пространстве SYSAUX. По умолчанию регулярный период сбора установлен на 60 минут. Это значение может быть уменьшено до 10 минут при желании. Механизм сбора статистической копии (awr snapshot) установлен в базе данных 10G по умолчанию и в отличии от пакета statspack установки на автоматический сбор информации не требуется. Как говорилось выше, для исполнения сбора статистики был введён новый фоновый процесс (MMON). За сбор информации для статистической копии отвечает подчинённый процесс (slave process) M001. В виду того, что MMON является фоновым процессом, влияние на производительность системы во время сбора информации сведено к минимуму путём доступа к структурам памяти (SGA) на прямую, минуя уровень SQL запросов. Ниже, на рисунке, схематично показана архитектура AWR и его взаимодействие с другими компонентами Oracle:
Как видно из схемы, фоновый процесс MMON периодически опрашивает динамические представления V$ и таблицы X$ и переносит статистическую информацию в свои внутренние таблицы словаря данных с префиксом WRH$. По умолчанию, сбор статистики процессом MMON выполняется каждый час. Процесс MMON также ответственен за удаление устаревшей информации из репозитария AWR. В отличие от утилиты STATSPACK, AWR может хранить статистические данные в виде ‘скользящего окна’. Например, AWR хранит по умолчанию статистику только за последние семь дней, хотя его можно настроить так, что статистика будет удаляться только вручную, как это предусмотрено в STATSPACK. MMON также собирает статистику ожиданий для новой компоненты Active Session History (ASH), которая позволяет просматривать историю работы каждого активного сеанса базы данных. Репозиторий AWRРепозиторий представляет набор таблиц и представлений словаря данных Oracle. Владельцем репозитория является пользователь SYS, объекты репозитория размещены в табличном пространстве SYSAUX. Все данные размещаются в наборе таблиц с префиксом WR. Статистическая информация, которая хранится в хранилище данных AWR активно используется, как внутренними, так и внешними компонентами Oracle, в то время как в STATPACK информация не использовалась, и дожидалась действий DBA. К внутренним компонентам, использующим статистику AWR, можно отнести такие новые компоненты, как Automatic Database Diagnostic Monitor (ADDM), SQL Tuning Advisor, SQL Access Advisor, Automatic Segment Advisor, Undo Advisor, Segment Advisorи т.д. Все эти компоненты впервые представлены в Oracle10g и служат для автоматизации и выработки рекомендаций по настройке производительности различных подсистем базы данных Oracle. Например, компонента ADDM автоматически выполняет анализ текущих данных в AWR после каждого нового снимка и показывает возможные узкие места в базе данных, а также предлагает свои рекомендации по возможным путям их решения. Внешними компонентами, использующими статистику AWR, являются Oracle Enterprise Manager, Statspack Viewer и т.д. Хранилище данных механизма AWR содержит таблицы следующих типов:
Ниже представлен запрос для получения списка этих таблиц: SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME = 'SYSAUX' AND SUBSTR(TABLE_NAME, 1,2) = 'WR' AND ROWNUM <= 20 ORDER BY 1; Результаты запроса: TABLE_NAME Как видно, по именам таблиц легко догадаться о данных, которые в них размещены. Возможности AWRМожно разделить статистические данные собираемые AWR на два больших класса:
Automatic Workload Repository (AWR) используется для сбора статистики производительности, включая:
Управление AWRДля управления настройками AWR можно использовать стандартный пакет PL/SQL DBMS_WORKLOAD_REPOSITORY и графический интерфейс Oracle Enterprise Manager. Пакет DBMS_WORKLOAD_REPOSITORY содержит следующие вызовы: MODIFY_SNAPSHOT_SETTINGS - процедура позволяет настраивать частоту, с которой процесс MMON будет сохранять в хранилище AWR новый снимок статистик, а также временной интервал хранения этого снимка в базе данных. Текущие значения этих настроек можно посмотреть, выполнив SQL-запрос: SELECT EXTRACT( DAY FROM SNAP_INTERVAL) * 24 * 60 + EXTRACT( HOUR FROM SNAP_INTERVAL) * 60 + EXTRACT( MINUTE FROM SNAP_INTERVAL ) "SNAPSHOT INTERVAL (MIN)", EXTRACT( DAY FROM RETENTION) * 24 * 60 + EXTRACT( HOUR FROM RETENTION) * 60 + EXTRACT( MINUTE FROM RETENTION ) "RETENTION INTERVAL (MIN)" FROM DBA_HIST_WR_CONTROL; CREATE_SNAPSHOT - процедура позволяет вручную сохранить в репозитории AWR новый статистический снимок. Единственный параметр этой процедуры задает детализацию статистической информации, сохраняемой в БД. Значение по умолчанию для этого параметра задается параметром инициализации экземпляра Oracle STATISTICS_LEVEL. Допустимые значения этого параметра - TYPICAL и ALL. Обычно рекомендуется использовать уровень статистики TYPICAL, который достаточен для мониторинга производительности базы данных. DROP_SNAPSHOT_RANGE - процедура позволяет вручную удалять статистические данные для заданного набора снимков. CREATE_BASELINE - процедура позволяет создавать именованные наборы снимков для последующего сравнения производительности базы данных для различных временных интервалов. AWR_REPORT_TEXT и AWR_REPORT_HTML - функции позволяют вручную строить отчеты для заданных временных интервалов. Константы пакета DBMS_WORKLOAD_REPOSITORY MIN_INTEVAL и MAX_INTERVAL задают допустимые минимальные и максимальные значения для интервала сбора статистики в минутах соответственно, а MIN_RETENTION и MAX_RETENTION задают минимальное и максимальное время хранения статистики в базе данных соответственно. Моментальные снимки (Snapshots)По умолчанию, снимки делаются каждый час и хранятся в течении 7 дней. Для определения установленных значений выполняется запрос: SELECT SNAP_INTERVAL, RETENTION FROM DBA_HIST_WR_CONTROL; SNAP_INTERVAL RETENTION Результаты запроса показывают, что интервал создания снимков равен 1 часу и хранятся снимки 7 дней, т.е. выставлены значения, используемые по умолчанию. Автоматическая сборка статистики возможна при значении параметра STATISTICS_LEVEL равным ALL или TYPICAL. Если значение равно BASIC, выполняется ручное управление снимками. Узнать текущее значение параметра можно выполнив запрос: SELECT NAME, VALUE FROM GV$PARAMETER WHERE NAME LIKE 'stat%'; statistics_level TYPICAL Изменить значение параметра STATISTICS_LEVEL можно конструкцией ALTER SYSTEM или ALTER SESSION. Создание моментальных снимковПо умолчанию, снимки создаются автоматически, но бывают ситуации, когда требуется ручное создание снимка. Для этого выполняется команда: BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(); END; Как видно, функция CREATE_SNAPSHOT не имеет параметров. Все необходимые параметры берутся из системы. Изменение настроек моментальных снимковЗначения, предлагаемые Oracle по умолчанию, могут быть изменены. Для этого выполняется такой запрос: BEGIN DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( -- Продолжительность хранения. Значение в минутах (установлено 30 дней). retention => 43200, -- Как часто делать снимок. Значение в минутах. interval => 30): END; /
Внесенные изменения и настройки отражаются в представлении DBA_HIST_WR_CONTROL. При установке значения интервал (interval) равное 0, снимки не делаются. Делать это не рекомендуется. Удаление снимковДля удаления снимков из репозитория используется процедура DROP_SNAPSHOT_RANGE: BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE ( low_snap_id => 42, high_snap_id => 52); END; / Вся информация о сделанных снимках может быть запрошена из представления DBA_HIST_SNAPSHOT. Далее представлен запрос иллюстрирующий это: COL INSTART_FMT NOPRINT; COL INST_NAME FORMAT A12 HEADING 'Instance'; COL DB_NAME FORMAT A12 HEADING 'DB Name'; COL SNAP_ID FORMAT 99999990 HEADING 'Snap Id'; COL SNAPDAT FORMAT A18 HEADING 'Snap Started' JUST C; COL LVL FORMAT 99 HEADING 'Snap/Level'; SET HEADING ON; BREAK ON INST_NAME ON DB_NAME ON HOST ON INSTART_FMT SKIP 1; TTITLE OFF; SELECT TO_CHAR(S.STARTUP_TIME,' DD MON "at" HH24:MI:SS') INSTART_FMT, DI.INSTANCE_NAME INST_NAME, DI.DB_NAME DB_NAME, S.SNAP_ID SNAP_ID, TO_CHAR(S.END_INTERVAL_TIME,'DD MON YYYY HH24:MI') SNAPDAT, S.SNAP_LEVEL LVL FROM DBA_HIST_SNAPSHOT S, DBA_HIST_DATABASE_INSTANCE DI WHERE DI.DBID = S.DBID AND DI.INSTANCE_NUMBER = S.INSTANCE_NUMBER AND DI.STARTUP_TIME = S.STARTUP_TIME ORDER BY SNAP_ID; Базовые линииБазовые линии (baselines) - это пара снимков, представляющая период использования. Однажды определенные базовые линии могут использоваться для сравнения производительности в различные моменты времени по сравнению с прошлыми показателями. Для создания базовой линии используется конструкция: BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE ( start_snap_id => 210, end_snap_id => 220, baseline_name => 'first_baseline'); END; / Пара снимков, ассоциированные с базовой линией сохраняется до тех пор, пока базовая линия не будет явно удалена: BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE ( baseline_name => 'first_baseline', cascade => FALSE); --Если значениеTRUE, то удаляются связанные снимки. END; / Для параметра CASCADE значение по умолчанию берется равным FALSE. Если вы создали базовые линии для периода времени, то можно обратиться к представлению DBA_HIST_SNAPSHOT для определения идентификаторов снимков - SNAP_ID, вошедших в этот период: SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1; SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME Запуск отчета AWRВ отличие от механизма statspack при использовании AWR нет надобности настраивать автоматический механизм сбора копий (snapshots). Эта функция работает по умолчанию в любой базе 10-ой версии. Пользователю остается лишь получить отчёт, который основывается на выбранных копиях. Для получения отчетов, Oracle предоставляет два скрипта awrrpt.sql и awrrpti.sql. Для генерации отчета выполните скрипты: @$ORACLE_HOME/rdbms/admin/awrrpt.sql @$ORACLE_HOME/rdbms/admin/awrrpti.sql Запуск из SQLPlus осуществляется как показано ниже: SQL> @?/rdbms/admin/awrrpt.sql SQL> @?/rdbms/admin/ awrrpti.sql После запуска на исполнение, будет предложено выбрать формат отчета - текстовый вариант или HTML. Указать идентификаторы начального и конечного снимков и месторасположение отчета. После того, как отчет сформирован, его можно просмотреть в браузере или любом текстовом редакторе. Пример исполнения отчета: SQL> @$ORACLE_HOME/rdbms/admin/awrrpti.sql На этом шаге запрашивается формат отчета, для получения в HTML введите html, для получения текстового варианта укажите text. По умолчанию используется HTML, в приведенном примере указан HTML: Enter value for report_type: html DB Id Inst Num DB Name Instance Host Enter value for dbid: 268115148 Listing the last 3 days of Completed Snapshots Specify the Begin and End Snapshot Ids На этом шаге будут запрошены идентификаторы начального и конечного снимков Enter value for begin_snap: 290 И на последнем шаге будет предложено указать имя отчета или использовать предложенное системой: Enter value for report_name: report.html Главное отличие от statspack заключается в том, что в простом отчёте AWR текст SQL команд представлен полностью, а не частично как это было раньше. Также можно использовать $ORACLE_HOME/rdbms/admin/awrsqrpt.sql для получения детального отчёта по определённому SQL. Примеры использования информации AWRКак было сказано выше, хранилище данных AWR служит источником данных о работе сервера баз данных для различных компонент сервера. Описание настройки других подсистем сервера, которые используют хранилище AWR для выработки своих рекомендаций, остается за рамками этой статьи. Ниже приведено несколько примеров того, как можно использовать информацию AWR для анализа тенденций в работе сервера Oracle. Анализ тенденций, или трендов, позволяет увидеть картину того, какие характеристики производительности имеет база данных по часам в течение дня или по дням недели. Обычно такая усредненная картина достаточно точно описывает поведение базы данных для конкретного набора приложений и конечных пользователей. Это позволяет более эффективно определять узкие места в работе и моменты времени, когда возможен спад производительности сервера. Например, DBA хочет знать, какой в среднем объем физических чтений и в какие моменты времени в течение дня генерирует база данных. Приведенный ниже запрос к хранилищу AWR отвечает на этот вопрос: SET PAGES 999 SET PAGESIZE 1000 BREAK ON SNAP_TIME SKIP 2 COL SNAP_TIME FORMAT A19 HEADING 'Day Hour' COL AVG_VALUE FORMAT 999,999,999 HEADING 'Avg Physical Reads' SELECT TO_CHAR(BEGIN_INTERVAL_TIME,'hh24') SNAP_TIME, AVG(VALUE) AVG_VALUE FROM DBA_HIST_SYSSTAT NATURAL JOIN DBA_HIST_SNAPSHOT WHERE STAT_NAME = 'physical reads' GROUP BY TO_CHAR(BEGIN_INTERVAL_TIME,'hh24') ORDER BY TO_CHAR(BEGIN_INTERVAL_TIME,'hh24'); Пример результата работы этого скрипта может выглядеть следующим образом: Hour Avg Physical Reads Из приведенного выше отчета видно, что наибольший объем операций физического чтения приходится в среднем на период времени с 11 до 13 часов, что может вызвать нежелательные задержки в работе пользователей. Знание подобного рода информации позволяет DBA более точно локализовать причины подобного рода проблем. Если скопировать полученные данные в Excel и построив график, можно получить графическое представление ситуации, как показано на нижеприведенном рисунке:
Тот же отчет, но по дням недели выглядит следующим образом: SET PAGES 999 SET PAGESIZE 1000 BREAK ON SNAP_TIME SKIP 2 COL SNAP_TIME FORMAT A19 HEADING 'Week Day' COL AVG_VALUE FORMAT 999,999,999 HEADING 'Avg Physical Reads' SELECT TO_CHAR(BEGIN_INTERVAL_TIME,'day') SNAP_TIME, AVG(VALUE) AVG_VALUE FROM DBA_HIST_SYSSTAT NATURAL JOIN DBA_HIST_SNAPSHOT WHERE STAT_NAME = 'physical reads' GROUP BY TO_CHAR(BEGIN_INTERVAL_TIME,'day') ORDER BY 2 DESC; Week Day Avg Physical Reads Еще один пример аналитического отчета, приведенный ниже, показывает усредненное время ожидания по часам суток, что позволяет определить, в какие моменты пользовательские сессии потенциально могут иметь задержку с ответом на свои запросы, вызванную ожиданием каких-либо ресурсов базы данных: SELECT TO_CHAR(H.SAMPLE_TIME,'HH24') "Hour", SUM(H.WAIT_TIME/100) "Total Wait Time (Sec)" FROM V$ACTIVE_SESSION_HISTORY H, V$EVENT_NAME N WHERE H.SESSION_STATE = 'ON CPU' AND H.SESSION_TYPE = 'FOREGROUND' AND H.EVENT_ID = N.EVENT_ID AND N.WAIT_CLASS <> 'Idle' GROUP BY TO_CHAR(H.SAMPLE_TIME,'HH24'); Hour Total Wait Time (Sec) Таким образом, механизм AWR наряду со стандартным набором отчетов предоставляет широкие возможности по более детальному анализу производительности в различных временных срезах. Использование AWR совместно с такими новыми технологиями Oracle, такими как Active Session History, улучшенный Wait Event Interface и набором встроенных утилит ADDM, SQL Tuning Advisor и других значительно облегчает задачи администрирования, мониторинга и поддержания производительности больших систем Oracle на необходимом уровне. На этом позвольте завершить эту обзорную статью посвященную AWR. Удачи. |
|
SGA, PGA и процессы.
ЭКЗЕМПЛЯР ORACLE
Экземпляр Oracle состоит из процессов и разделяемой памяти, необходимой для доступа к информации в БД. Если копнуть чуть глубже, то экземпляр составляют пользовательские процессы, фоновые процессы Oracle и разделяемая область памяти, которую используют все эти процессы.
Что же представляет собой разделяемая память (shared memory)? Oracle использует разделяемую память в разных целях: как кэширование данных и индексов, так и хранение программного кода. Разделяемая память делится на несколько частей (или структур памяти). Основными структурами памяти Oracle являются Системная Глобальная Область (System Global Area или SGA) и Программная Глобальная Область (Program Global Area или PGA). Рассмотрим SGA и PGA более подробно. (далее…)

