Oracle DB. Простая генерация отчета AWR из БД.

Начиная с версии 10g Oracle позволяет использовать AWR(Automatic Workload Repository) для анализа системы с целью решения проблем с производительностью.
В этой статье я покажу быстрый способ генерации отчета AWR.


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


Для начала необходимо развернуть функцию генерации отчета.

create or replace function AWR_HTML(in_begin_point in number, in_end_point in number) return clob is
  ret_html clob;
  db_id number;
begin
  select dbid into db_id from v$database;
  for i in (
            select output 
            from table(dbms_workload_repository.awr_report_html(db_id,  1, in_begin_point, in_end_point))
           )
  loop
    ret_html:=ret_html||i.output;
  end loop;

  return(ret_html);
end AWR_HTML;

После этого необходимо определить на основе каких снапшотов будет построен отчет.

select snap_id, end_interval_time from dba_hist_snapshot
order by snap_id desc
1458	20.01.16 11:00:07,855
1457	20.01.16 10:00:05,418
1456	20.01.16 09:00:02,709
...

Обычно Oracle уже создаёт снапшоты в фоновом процессе с некоторой периодичностью, однако если вы хотите форсировать создание снапшота можно воспользоваться следующей процедурой.

begin
  dbms_workload_repository.create_snapshot;
end;

Всё готово к генерации. Подставив найденные ID снапшотов в следующий селект можно сгенерировать отчет в формате html.

select awr_html(1457, 1458) from dual

Если вы пользуетесь средой разработки PL/SQL Developer, то при открытии получившегося clob он сразу же откроется во встроенном просмотрщике как html-страница. Очень удобно 🙂

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *