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
![](./image2021-1-29_9_42_45.png)