Automati c SQL отчет советника по настройке для самых популярных запросов в oracle - PullRequest
0 голосов
/ 14 января 2020

Я использую OEM для просмотра отчета помощника по настройке, который выполняется как часть ежедневного технического обслуживания, для конкретного запроса c. Теперь мое требование - получить один файл (текст / html), в котором будет отчет советника по настройке для топ-10/20 отчета AWR. Может ли кто-нибудь помочь мне получить отчет по запросу.

Версия БД: 12.1.0.2

1 Ответ

2 голосов
/ 14 января 2020

Вам нужна «задача» из запуска SQL Tuning Advisor (STA), чтобы получить отчет STA. Код для выполнения одной задачи:

SELECT DBMS_SQLTUNE.report_tuning_task(:task_name) AS recommendations FROM dual;

Не должно быть так сложно получить отчет STA для нескольких задач, например, используя SQL* Plus:

-- Once the tuning task has executed successfully the recommendations can be displayed using the REPORT_TUNING_TASK function.
set linesize 210 
set pagesize 9999
set long 10000000
set time on
set timing on
SET SERVEROUTPUT ON
-- width of output should not need more than 200
column recommendations format a200

spool c:\temp\STA_reports.txt
SELECT DBMS_SQLTUNE.report_tuning_task('68vm8dtty867d_1340348426_AWR') AS recommendations FROM dual ;
prompt =================================================================
SELECT DBMS_SQLTUNE.report_tuning_task('69w2tux85a9x7_814599999_AWR') AS recommendations FROM dual ;
rem ...
spool off

Итак, в основном вам нужно запустить STA для top- SQL, а затем сгенерировать отчеты в виде одного файла.

Я не использую OEM регулярно, так как нашел этот инструмент чтобы не охватывать случаи использования, с которыми я часто сталкиваюсь, скорее, я сгенерирую список Top- SQL непосредственно из DBA_HIST_SQLSTAT *. Одна из причин этого заключается в том, что я могу выделить SQL, который не относится к заявленной проблеме производительности; Кроме того, я могу заказать Top- SQL по разным показателям (например, прошедшее время, время процессора, буферизованное получение,…). Когда у меня есть SQL_ID для SQL, представляющих интерес, я запускаю их все через SQL Tuning Advisor. Вместо того, чтобы изучать отчеты SQL Tuning Advisor, я собираю постоянные результаты непосредственно из таблиц DBA_ADVISOR%. С помощью этих запросов я извлекаю код для реализации рекомендаций (например, SQL для сбора статистики, создания индексов, принятия SQL профилей) непосредственно из таблиц DBA_ADVISOR%. Я говорил об этом на многих Oracle конференциях, но это решение выходит далеко за рамки прямого ответа на вопрос.

* Сценарий DBA_HIST_SQLSTAT можно найти в ответе на вопрос " сколько ЦП использование сеанса в данный момент времени в oracle "

...