Blame
|
1 | ## AWR - как снять вручную |
||||||
| 2 | ||||||||
| 3 | #### Снятие скриптом |
|||||||
| 4 | ||||||||
| 5 | При отсутствии Enterprise Manager можно легко снять AWR отчеты. Всё, что для этого понадобится — доступ к базе. |
|||||||
| 6 | Выполняем следующий запрос: |
|||||||
| 7 | ```oraclesql |
|||||||
| 8 | --Поиск DB_ID и всех точек |
|||||||
| 9 | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc |
|||||||
| 10 | ``` |
|||||||
| 11 | Из этого запроса мы узнаем ID базы и номер инстанса. Так же видим все последние снапшоты. Если надо выбрать отчет за какое-то время, можно воспользоваться существующими точками. |
|||||||
| 12 | Если же надо построить отчет по происходящему, создаем новые точки: |
|||||||
| 13 | ```oraclesql |
|||||||
| 14 | --создание новой точки |
|||||||
| 15 | declare |
|||||||
| 16 | v_num number; |
|||||||
| 17 | begin |
|||||||
| 18 | v_num := dbms_workload_repository.create_snapshot(); |
|||||||
| 19 | dbms_output.put_line(v_num); |
|||||||
| 20 | end; |
|||||||
| 21 | ``` |
|||||||
| 22 | ||||||||
| 23 | В результате выполнения этого кода получаем созданый снапшот. Результат — ID снапшота. Затем проводим нужные эксперименты и создаем еще один снапшот. Между ними и будем строить отчет. |
|||||||
| 24 | Для построения отчета используем следующий запрос: |
|||||||
| 25 | ```oraclesql |
|||||||
| 26 | select * from table (dbms_workload_repository.awr_report_html (/*db_id*/2388135020, /*INSTANCE_NUMBER*/1, /*SNAP_ID 1*/19427, /*SNAP_ID 2*/19428)) |
|||||||
| 27 | ``` |
|||||||
| 28 | Копируем результат выполнения в файл с расширением html, счастье есть. |
|||||||
| 29 | ||||||||
| 30 | #### Снятие через функцию |
|||||||
| 31 | ||||||||
| 32 | Вариант через функцию(на выходе получаем CLOB, можем просматривать родным PL SQL DEVELOPERа просмотрщиком |
|||||||
| 33 | ```oraclesql |
|||||||
| 34 | --Функция создания AWR |
|||||||
| 35 | create or replace function AWR_HTML(in_begin_point in number, in_end_point in number) return clob is |
|||||||
| 36 | ret_html clob; |
|||||||
| 37 | db_id number; |
|||||||
| 38 | begin |
|||||||
| 39 | select dbid into db_id from v$database; |
|||||||
| 40 | for i in ( |
|||||||
| 41 | select output |
|||||||
| 42 | from table(dbms_workload_repository.awr_report_html(db_id, 1, in_begin_point, in_end_point)) |
|||||||
| 43 | ) |
|||||||
| 44 | loop |
|||||||
| 45 | ret_html:=ret_html||i.output; |
|||||||
| 46 | end loop; |
|||||||
| 47 | return(ret_html); |
|||||||
| 48 | end AWR_HTML; |
|||||||
| 49 | ``` |
|||||||
| 50 | ||||||||
| 51 | ```oraclesql |
|||||||
| 52 | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc; |
|||||||
| 53 | select awr_html(7031, 7033) from dual |
|||||||
| 54 | ``` |
|||||||
|
55 | Сохраняем сразу в HTML виде: |
||||||
| 56 | ||||||||
|
57 |  |
||||||
|
58 | |||||||
| 59 | ||||||||
| 60 | ||||||||
| 61 | [^footnote_identifier]: footnote_description |
|||||||