Blame
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 1 | ## AWR - как снять вручную |
| 2 | ||||
| 3 | #### Снятие скриптом |
|||
| 4 | ||||
| 5 | При отсутствии Enterprise Manager можно легко снять AWR отчеты. Всё, что для этого понадобится — доступ к базе. |
|||
| 6 | Выполняем следующий запрос: |
|||
| 21f6db | feagor | 2025-12-02 12:54:33 | 7 | ```oraclesql= |
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 8 | --Поиск DB_ID и всех точек |
| 9 | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc |
|||
| 10 | ``` |
|||
| 11 | Из этого запроса мы узнаем ID базы и номер инстанса. Так же видим все последние снапшоты. Если надо выбрать отчет за какое-то время, можно воспользоваться существующими точками. |
|||
| 12 | Если же надо построить отчет по происходящему, создаем новые точки: |
|||
| 21f6db | feagor | 2025-12-02 12:54:33 | 13 | ```oraclesql= |
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 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 | Для построения отчета используем следующий запрос: |
|||
| 21f6db | feagor | 2025-12-02 12:54:33 | 25 | ```oraclesql= |
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 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а просмотрщиком |
|||
| 21f6db | feagor | 2025-12-02 12:54:33 | 33 | ```oraclesql= |
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 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 | ||||
| 21f6db | feagor | 2025-12-02 12:54:33 | 51 | ```oraclesql= |
| 46b3e7 | feagor | 2025-12-02 12:23:15 | 52 | select * from DBA_HIST_SNAPSHOT d order by d.begin_interval_time desc; |
| 53 | select awr_html(7031, 7033) from dual |
|||
| 54 | ``` |
|||
| d3877e | feagor | 2025-12-02 12:54:56 | 55 | Сохраняем сразу в HTML виде:<br> |
| 242c61 | feagor | 2025-12-02 12:32:47 | 56 |  |