Commit 46b3e7
2025-12-02 12:23:15 feagor: -/-| /dev/null .. oracle/awr и ash/AWR - как снять вручную.md | |
| @@ 0,0 1,55 @@ | |
| + | ## AWR - как снять вручную |
| + | |
| + | #### Снятие скриптом |
| + | |
| + | При отсутствии Enterprise Manager можно легко снять AWR отчеты. Всё, что для этого понадобится — доступ к базе. |
| + | Выполняем следующий запрос: |
| + | ```oraclesql |
| + | --Поиск DB_ID и всех точек |
| + | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc |
| + | ``` |
| + | Из этого запроса мы узнаем ID базы и номер инстанса. Так же видим все последние снапшоты. Если надо выбрать отчет за какое-то время, можно воспользоваться существующими точками. |
| + | Если же надо построить отчет по происходящему, создаем новые точки: |
| + | ```oraclesql |
| + | --создание новой точки |
| + | declare |
| + | v_num number; |
| + | begin |
| + | v_num := dbms_workload_repository.create_snapshot(); |
| + | dbms_output.put_line(v_num); |
| + | end; |
| + | ``` |
| + | |
| + | В результате выполнения этого кода получаем созданый снапшот. Результат — ID снапшота. Затем проводим нужные эксперименты и создаем еще один снапшот. Между ними и будем строить отчет. |
| + | Для построения отчета используем следующий запрос: |
| + | ```oraclesql |
| + | select * from table (dbms_workload_repository.awr_report_html (/*db_id*/2388135020, /*INSTANCE_NUMBER*/1, /*SNAP_ID 1*/19427, /*SNAP_ID 2*/19428)) |
| + | ``` |
| + | Копируем результат выполнения в файл с расширением html, счастье есть. |
| + | |
| + | #### Снятие через функцию |
| + | |
| + | Вариант через функцию(на выходе получаем CLOB, можем просматривать родным PL SQL DEVELOPERа просмотрщиком |
| + | ```oraclesql |
| + | --Функция создания 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; |
| + | ``` |
| + | |
| + | ```oraclesql |
| + | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc; |
| + | select awr_html(7031, 7033) from dual |
| + | ``` |
| + | Сохраняем сразу в HTML виде |