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

By | 20.01.2016

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

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

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
Output
Обычно Oracle уже создаёт снапшоты в фоновом процессе с некоторой периодичностью, однако если вы хотите форсировать создание снапшота можно воспользоваться следующей процедурой.

begin
  dbms_workload_repository.create_snapshot;
end;

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

select awr_html(1457, 1458) from dual

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

Leave a Reply

Your email address will not be published. Required fields are marked *