Joomla 3.1 Templates by FatCow Coupon

Анализ отчетов AWR

Категория: Блог Опубликовано 24.05.2017

1.Что такое AWR отчеты 
2. Для чего используются AWR отчеты 
3. Построение AWR отчетов 
4. Системные представления AWR репозитория отчетов 
5. AWR отчет в формате HTML 
6. Основные параметры отчетов AWR 
7. На что еще следует обратить внимание! 

1. Что такое AWR отчеты 

Automatic Workload Repository представляет из себя набор внутренних таблиц словаря данных БД Oracle и специальный фоновый процесс MMON, который появился в версии Oracle10g. 
Периодически AWR создает статистическую копию (снимок) и сохраняет информацию в таблицах расположенных в табличном пространстве SYSAUX. По умолчанию регулярный период сбора установлен на 60 минут. Это значение может быть уменьшено до 10 минут при желании. Механизм сбора статистической копии (awr snapshot) установлен в базе данных 10G по умолчанию и в отличии от пакета statspack установки на автоматический сбор информации не требуется. 


Скрипт формирования AWR заполняет специальный AWR репозиторий набор таблиц и представлений словаря данных Oracle помощью специального системного процесса NMON. 


2.Для чего используются AWR отчеты 

Automatic Workload Repository (AWR) используется для сбора статистики производительности, включая: 

Время ожидания ресурсов базы данных (foreground и background wait events). Эту статистическую информацию можно использовать для первоначального определения 'узких' мест в производительности базы данных 


Метрики, характеризующие скорость доступа к различным ресурсам базы данных. Например, процессорное время на вызов пользователя (CPU Tome Per User Call) или число логических чтений в секунду (Consistent Read Gets Per Sec). 
Этот вид статистики появился в Oracle10g и представляет собой набор автоматически вычисляемых процессом MMON статистик, которые раньше надо было вычислять вручную 

Временные статистики, описывающие распределение использования процессорного времени (Time model). Этот вид статистик также является новшеством 10 версии и характеризует использование процессорного времени для выполнения определенных задач. Например, метрика sql execute elapsed time характеризует фактическое время выполнения запросов SQL. 

Наибольший интерес представляет собой метрика DB time, которая описывает общее процессорное время, затраченное Oracle для обслуживания всех пользовательских операций. Эту метрику можно использовать для мониторинга общей загрузки БД 

Системные статистики, описывающие производительность экземпляра Oracle и операции ввода/вывода в табличные пространства/файлы данных базы Статистика работы операционной системы. В 10 версии появилась возможность отслеживать основные параметры производительности операционной системы Статистическая информация по SQL-запросам. Данный вид статистики позволяет DBA отслеживать ресурсоемкие SQL-запросы, используя различные критерии. Например, выбирать SQL-запросы, сделавшие наибольшее число операций ввода/вывода в файлы данных 

Статистика по истории доступа к сегментам данных. Данный вид статистики позволяет выявить "горячие" сегменты данных, используя различные критерии, например, число логических или физических чтений данных сегмента 
Применительно к практике чаще всего возникают следующие случаи: 

На систему ставиться большой патч, который затрагивает многие ее компоненты , в этом случае анализируются отчеты AWR до установки обновления и после , с целью выявления реальных проблем с производительностью 

Требуется выяснить моменты пиковой нагрузки на базу данных , то есть переводы времени когда сильнее всего использовалась процессорные мощности, было максимальное количество чтений с дисков, макс использование разделяемого пула , макс периоды ожидания и тд, так же полезно анализировать топ запросов по кол операций ввода вывода в такие моменты пиковых нагрузок. 

С помощью AWR отчетов ,так же можно проанализировать, поведение заданного экземпляра БД Oracle в моменты наибольших нагрузок , при подаче трафика с помощью внешних систем При введении новых компонентов приложения , которые потенциально могут повлиять на влияют на работу экземпляров БД Oracle 


3.Построение AWR отчетов. 

Для построения AWR отчетов в Oracle используется специальный пакет DBMS_WORKLOAD_REPOSITORY , так же сформировать отчет можно с помощью специальных команд Enterprice Manager console. 
процедуры пакета DBMS_WORKLOAD_REPOSITORY 

СREATE_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 задают минимальное и максимальное время хранения статистики в базе данных соответственно. 
для того, чтобы собрать отчет в формате HTML можно воспользоваться уже готовым скриптом входящим в поставку Oracle СУБД - awrrpt.sql 

4.Системные представления, AWR репозитория отчетов 
В репозитарии отчетов используются следующие системные представления 

• WRH$_ACTIVE_SESSION_HISTORY_BL - история активных сессий 
• WRH$_BG_EVENT_SUMMARY - суммарная статистика по событиям 
• WRH$_BUFFER_POOL_STATISTICS - статистика разделяемого пула 
• WRH$_CLASS_CACHE_TRANSFER_BL - 
• WRH$_CR_BLOCK_SERVER - блокировки серверных курсоров 
• WRH$_CURRENT_BLOCK_SERVER - секущие серверные блокировки 
• WRH$_DATAFILE - статистика по файлам данным 
• WRH$_DB_CACHE_ADVICE_BL - 
• WRH$_DLM_MISC_BL 
• WRH$_ENQUEUE_STAT 
• WRI$_OPTSTAT_HISTGRM_HISTORY - 
• WRI$_OPTSTAT_HISTHEAD_HISTORY 
• WRI$_OPTSTAT_IND_HISTORY 
• WRI$_OPTSTAT_OPR 
• WRI$_OPTSTAT_TAB_HISTORY - статистика по таблицам 
• WRI$_SCH_CONTROL 
• WRI$_SCH_VOTES - 
• WRI$_SQLSET_BINDS - статистика по связанным параметрам и переменным 
• WRI$_SQLSET_DEFINITIONS - статистика по определениям sql курсоров 
• WRM$_BASELINE - статистка по закрепленным планам запросов в реальности же обращение чаще всего происходит к специальным представлениям • DBA_HIST_WR_CONTROL - настройки AWR 
• DBA_HIST_SNAPSHOT - собственно собранная статистика 
• DBA_HIST_DATABASE_INSTANCE - экземпляры БД по которой собирается статистика 

Вот несколько запросов на основе данных представлений , наиболее часто использующихся в работе 

Запрос, возвращающий текущие настройки AWR: 

 SELECT  EXTRACT( DAY FROM SNAP_INTERVAL) * 24 * 60 + EXTRACT( HOUR FROM SNAP_INTERVAL) * 60 
 + EXTRACT( MINUTE FROM SNAP_INTERVAL ) "Интервал снимков(мин)" , EXTRACT( DAY FROM RETENTION) * 24 * 60  + EXTRACT( HOUR FROM RETENTION) * 60 
 + EXTRACT( MINUTE FROM RETENTION ) "Интервал хранения снимка(мин)"   FROM DBA_HIST_WR_CONTROL;  



Запрос, возвращающий информацию о всех снимках; 

 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 HERE DI.DBID = S.DBID AND DI.INSTANCE_NUMBER = S.INSTANCE_NUMBER  AND DI.STARTUP_TIME = S.STARTUP_TIME ORDER BY SNAP_ID;  



Запрос, который позволяет узнать средний обьем физических чтений данные группируются по часу , аналогично , можно дополнительно сгруппировать данные по дням: 

 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');  



5.AWR отчеты в формате HTML 

Формирование AWR отчета осуществляется на сервере , удобнее всего, для этого воспользоваться утилитой sqlplus 

Необходимо зайти в утилиту sqlplus под учетной записью sys 
пример 
sqlplus sys/пароль1 as sysdba где пароль1 это ваш пароль далее вызвать скрипт awrrpt.sql с помощью следующей команды 
@$ORACLE_HOME/rdbms/admin/awrrpt.sql 

В консоли вам будет предложено выбрать тип отчета 
Would you like an HTML report, or a plain text report? 
Enter 'html' for an HTML report, or 'text' for plain text Defaults to 'html' 
Enter value for report_type: 

по умолчанию выбирается тип HTML , если вам необходим отчет в текстовом формате вы набираете слово text и нажимаете Ввод (Enter) 

На экран будет выведен список экземпляров БД для которых вы хотели сформировать отчеты: 

Instances in this Workload Repository schema srw1inst, srw2inst, 

далее следует вопрос - статистка за какой день вам нужна, вы вводите день который отчаивается от текущей даты или просто нажмете ввод , тогда будут построены все доступные отчеты, либо последний сформированный снимок статистики 

Enter value for num_days: 

Далее на экран выводится список доступных снимков , где более всего интересно поле SnapId требуется задать начальный идентификатор снимка и конечный идентификатор снимка базы 

Enter value for begin_snap: Enter value for end_snap: 
то есть например нам необходимы снимки 101 , 102, 103 мы вводим 

begin_snap - 101, end_snap 103 (время и дату формирования данных снимков есть в списке) 

Дальше вводится имя отчета Enter value for report_name, если же просто нажать Ввод , то имя отчету присваивается автоматически 
Через некоторое время в текущей папке формируется awr или txt отчет c соответствующим расширением 

например : AWRRPT_2_1111_1112.HTML MYAWR_23213.txt 

Теперь можно скопировать отчет к себе и изучить его. Заголовок отчета содержит следующие данные: 
Картинка с другого сайта.


  • DBname -orcl -Имя базы данных 
  • DBid - 1233424 -идентификатор базы данных 
  • Instance - orcl - инстанс 
  • Inst num - 1-номер инстанса 
  • Startup time - 02.02.2003 01:01:01 время дата создания 
  • host name - host.nnm.com - имя хоста 
  • CPU - 1 - кол процессоров 
  • Cores - 1 - кол ядер 
  • Socket - 1 - кол сокетов 
  • Memory (GB) - 1,97 Гб 

    Второй блок содержит информацию о снимках Snap shot detail 
    Картинка с другого сайта.

  • Snap id (Begin snap , End snap) (идентификатор первого и последнего снимка) 
  • Snap time (Begin snap , End snap) (время первого и последнего снимка) 
  • Session (количество сессий ) - за данное время
  • Cursor/Session (курсоров на сессию) - 
  • Elapsed - общее потраченное время. 
  • DB time - время потраченное за период отчета всеми пользовательскими процессами в БД Далее AWR отчет включает следующие диагностические данные: 


  • Время снимков 
  • Профиль загрузки 
  • Эффективность экземпляра в процентах 
  • Топ 5 foreground процессов 
  • CPU и память использованные экземпляром в заданный для отчета период времени (Тime Model Statistics) 
  • Статистика операционной системы (Operating System Statistics) 
  • SQL statistic (Статистика SQL запросов) 



    Load Profile (Профиль загрузки) 
    Картинка с другого сайта.
    В этом блоке есть немного важной статистики для изучения DBA. Во первых DB CPU(s) в секунду. В первую очередь это позволяет нам понять , как работаю процессоры ЦПУ. Предположим, что у Вас есть в системе 12 ядерный процессор . 

    Статистика представлена в виде таблицы
    так же можно посмотреть следующую статистическую информацию которая распределяется (на секунду , на транзакцию , на запрос, на вызов) 

  • DB Time(s) - загрузка на процессор (на секунду , на транзакцию ...) 
  • DB CPU(s) - 
  • Redo size - обьем чтения (на секунду , на транзакцию ...) 
  • Logical reads - среднее колич логических чтений блоков (в секунду , в транзакцию ...) 
  • Block changes - ср знач измененных блоков (в секунду , в транзакцию ...) 
  • Phisical reads - физическое чтение в блоках (в секунду , в транзакцию ...) 
  • Phisical writes - записей в блоках(в секунду , в транзакцию ...) 
  • User call - пользовательских вызовов (в секунду , в транзакцию ...) 
  • Parses - разборов (в секунду , в транзакцию ...) 
  • logons - входов (в секунду , в транзакцию ...) 
  • Excecutes - вызовов (в секунду , в транзакцию ...) 
  • Rollback - откатов данных (в секунду , в транзакцию ...) 
  • Transacions - транзакций (в секунду , в транзакцию ...) 

    Instance Efficiency Percentages(Эффективность экземпляра в процентах) 
    Картинка с другого сайта.

    В этих статистических данных Вы наиболее важный параметр "% Non-Parse CPU". Если это значение - приближается к 100%, значить большинство ресурсов ЦП, используется в различных операциях, кроме парсинга, что говорил правильной работе базы данных. Top 5 Timed Foreground Events (Топ 5 процессов Foreground) 

    Топ 5 foreground процессов является хорошей точкой для начала диагностики проблем производительности.
    Картинка с другого сайта.

    Назначение этого блока отчета - показать наиболее значительные события, связанные с расходованием ресурсов Например максимальный % от DB time был затрачен на ожидание буферов в буферном кэше (buffer busy waits). Дополнительные разделы в отчете AWR содержат более детальную информацию, которая помогает диагностировать проблемы производительности. Во первых, следует обратить внимание на значение Waits(ожидание) в классе user i/o и system i/o , Other (пользовательский ввод вывод и системный ввод вывод, другие) Если вы видите класс Конкуренция(Concurrency) то могут возникать серьезные проблемы. 

    Во-вторых необходимо, проанализировать время Time(s), оно показывает, сколько времени база данных ожидала в данном классе(other, user I/O..), требуется проанализировать время, которое было затрачено в данных классах , затем проанализировать среднее время ожидания (Avg wait) , если общее время (Time(s)) высокое, а среднее время ожидания (Avg waits) низкое , тогда это нормальные параметры производительности. 
    Если же оба параметра высоки , тогда требуется дополнительный анализ. На снимке экрана выше большая часть ресурсов - это DB CPU , где время БД (% DB time) = 64%. Что, вообщем, является нормальной ситуацией. 

    CPU и память использованные экземпляром в заданный для отчета период времени (Тime Model Statistics) 

    Картинка с другого сайта.

    Это детальная расшифровка использования системных ресурсов. Данная статистика включает затраченное время и %DB time 


    Operating System Statistics (Статистика операционной системы) 
    Картинка с другого сайта.
    Этот раздел AWR отчета содержит статистическую информацию, связанную с работой операционной системы, статус нагрузки операционной системы. Snap time 
  • Load - загрузка 
  • %busy - процент занятости 
  • %user - процент пользовательских процессов 
  • %sys - процент системных процессов 
  • %idle - процент ожидание процессов 
  • %iowait - ожидание ввода вывода процессов 

    Этот отчет показывает, что система 62 и 70% в режиме ожидания то есть записывает данные на диск, Таким образом, в данном случае,нет никакого дефицита ресурсов на системном уровне. Но если вы обнаружили очень высокий %busy , %user или SYS% и это забрало бы ресурсы у idle%. В этом случае, требуется выяcнить причину такой стaтистики. 

    SQL statistic (Статистика SQL запросов)
    Картинка с другого сайта.
    Один из наиболее важных разделов AWR отчета , информация о SQL запросах, наиболее значительных с точки зрения потребляемых ресурсов.

  • SQL ordered by Elapsed time - Топ SQL запросов по затраченному времени
  • SQL ordered by CPU time- Топ Sql Запросов по процессорному времени
  • SQL ordered by USER I/O wait time - топ запросов по ожиданию ввода вывода
  • SQL ordered by Reads - топ запросов по чтениям
  • SQL ordered by Physical Reads - топ запросов по физическому чтению

    SQL Ordered by Elapsed Time
    Топ запросов по затараченному времени. Представлен в виде таблицы
    Картинка с другого сайта.
  • Затраченное Время(Elapsed time)
  • Выполнение (Executions)
  • время за выполнение(Elapsed time per Excec(s))
  • %total - общее расходование ресурсов
  • %CPU - процессор ресурсы
  • %IO - ввод-вывод ресурсы запроса
  • SQLID - идентификатор запроса (ссылка по которой можно удобно посмотреть весь запрос целиком)
  • SQL Module - модуль из которого вызывался запрос
  • SQL Text - краткий текст sql запроса

    SQL Ordered by CUP Time.

    Топ запросов по использованию ресурсов процессора 
    Картинка с другого сайта.

  • Процессорное Время потребляемое запросом(CPU time)
  • Выполнение Executions),
  • процессорное время за одно выполнение(CPU time per Excec(s))
  • %total - общее расходование ресурсов
  • %CPU - процессор ресурсы
  • %IO - ввод вывод ресурсы запроса
  • SQLID - идентификатор запроса (ссылка по которой можно удобно посмотреть веь запрос целиком)
  • SQL Module - модуль из которого вызывался запрос
  • SQL Text - краткий текст sql запроса



    7.На что еще следует обратить внимание!

    Кроме загрузки системных ресурсов обязательно требуется просмотр SQL statistic , какие запросы создают максимальную нагрузку и взывают наибольший расход системных ресурсов.
Просмотров: 174