Что такое AWR-отчет в Oracle и для чего он используется?

«Что такое AWR-отчет в Oracle и для чего он используется?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AWR (Automatic Workload Repository) — это встроенное в Oracle средство сбора, обработки и хранения диагностических данных о производительности базы данных. AWR-отчет — это снимок этой статистики за определенный период, который является основным инструментом для анализа производительности и поиска узких мест.

Как это работает?

  1. Фоновый процесс MMON (Manageability Monitor) каждые 60 минут (по умолчанию) делает снапшот ключевых системных метрик (V$ представления) и сохраняет их в AWR.
  2. Отчет сравнивает два снапшота, показывая, что изменилось за выбранный интервал.

Ключевые разделы AWR-отчета и что они показывают:

Раздел Назначение Ключевые метрики
Load Profile Общая нагрузка на БД. Transactions/sec, Logical Reads/sec, Physical Reads/sec, Hard Parses/sec.
Top 10 Foreground Events by Total Wait Time Основные причины ожиданий (узкие места). db file sequential read (ожидание индексов), db file scattered read (полнотабличный доступ), log file sync (коммит).
SQL Statistics Самые ресурсоемкие SQL-запросы. SQL ordered by Elapsed Time, by CPU Time, by Gets (логические чтения), by Executions.
Instance Efficiency Percentages Эффективность использования памяти. Buffer Hit Ratio (%), Library Hit Ratio (%). Цель > 90%.
Wait Event Histogram Детализация времени ожиданий. Показывает, сколько событий длилось <1мс, 1-4мс и т.д.

*Как сгенерировать AWR-отчет из SQLPlus:**

-- 1. Найти ID нужных снапшотов
SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
ORDER BY snap_id DESC;

-- 2. Запустить скрипт создания отчета (укажите начальный и конечный snap_id)
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
-- Скрипт запросит тип отчета (text/html) и имя файла.

Практическое применение:

  • Анализ деградации производительности: Сравнить отчеты "до" и "после" изменений или в периоды пиковой нагрузки.
  • Поиск проблемных запросов: Выявить SQL с высоким временем выполнения, большим числом чтений или физических I/O.
  • Настройка памяти: Определить, нужен ли больший размер буферного кеша или пула разделяемых областей.

Связанные инструменты: ASH (Active Session History) — дает детальную информацию об активных сессиях в реальном времени (удобен для анализа коротких инцидентов). ADDM (Automatic Database Diagnostic Monitor) — автоматически анализирует AWR-данные и дает рекомендации.