@admusers

Как правильно снять результат производительности в oracle?

Доброго времени суток, стоит задача снять показания производительности в Oracle 11.2.0 g при запуске скрипта, есть Enterprise Manager.
Есть два sql скрипта, надо запустить первый и снять показания: как повлиял на CPU RAM etc. Запустить второй sql скрипт и тоже снять показания и сравнить между собой.
Через Shanshot в EM мне кажется не тот результат получу.
ASH report даст правильные данные ?
  • Вопрос задан
  • 1684 просмотра
Решения вопроса 1
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Можно посмотреть статистику активности запроса в красивом виде с помощью пакета: DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id => sql_id, session_id =>sid, type=>'ACTIVE')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@igaraev
Есть AWR отчёт в оракле. Его легко получить в SQL/Developer.
view -DBA (чтоб отобразить панель DBA)
DBA-perfomance-AWR

Также есть отдельная программа Ashview c помощью которой можно мониторить в режиме Online.
Ответ написан
Комментировать
@alpodrezov
Orcale developer
перед каждым запросом отчищаем кэш буферов и шаренный пул
execute immediate 'alter system flush shared_pool';
execute immediate 'alter system flush buffer_cache';
далее выполняем запрос
для снятия статистик по сессии, разворачиваем результат для наглядности и сохраняем результат в память или в табличку
select
SESSION_LOGICAL_READS,CPU_USED,BLOCK_GETS,PHYSICAL_READS
from (
select
a.statistic# as stat,
b.value
from
v$statname a,
v$mystat b
where
a.statistic# in (14, 19, 128, 141) -- коды статистик oracle
and a.statistic# = b.statistic#
)
pivot
(
sum(value) for stat in (14 as session_logical_reads, 19 as cpu_used, 128 as block_gets, 141 as physical_reads)
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы