Важно заметить, что SQL Tuning Advisor, подобно всем другим управляющим советчикам, сформирован на основе общего Advisor Framework. Advisor Framework обеспечивает общую поддержку инфраструктуры для построения, сохранения и поиска советов, сгенерированных при помощи различных управляющих возможностей, включая SQL Tuning Advisor.Поэтому все процедуры настройки SQL работают с объектами задач советчика, названными задачами настройки. Это значит, что для выполнения автоматической настройки должна быть создана задача настройки. Использование SQL- процедур настройки, включая создание задач настройки, требует наличия привилегии ADVISOR.
Для выполнения автоматической SQL-настройки, используя пакет DBMS_SQLTUNE, первым шагом всегда будет создание задачи настройки вызовом процедуры create_tuning_task. Эта процедура создает задачу советчика и задает ей соответствующие параметры, согласно установленным пользователем входным параметрам.
Есть несколько разновидностей процедуры create_tuning_task, которые могут быть использованы для создания задач настройки для настройки одного SQL-предложения или множества предложений, сохраненных в SQL Tuning Set.
Следующий пример показывает одну форму процедуры create_tuning_task, которая позволяет передавать текст SQL-предложению непосредственно, как параметр. В этом примере текст предложения передается, как CLOB. create_tuning_task( sql_text => ‘select * from emp where emp_id = :bnd', bind_list => sql_binds(anydata.ConvertNumber(100)), user_name => ‘scott', scope => ‘comprehensive', time_limit => 60, task_name => ‘my_sql_tuning_task', description => ‘task to tune a query on a specified employee');
В этом примере целевое предложение использует связанную переменную bnd, значение которой (100) - это число, передающееся как функциональный аргумент типа SQL_BINDS. SQL_BINDS - это новый тип объектов, введенный в Oracle 10g. Параметр scott предоставляет имя схемы, в которой анализируется представление. Возможности настройки задачи передаются, как comprehensive, чтобы сообщить SQL Tuning Advisor, что нужно сделать полный анализ, включая генерацию SQL Profile. И, наконец, аргумент 60 - это предел по времени в секундах для настройки SQL-предложения.
Есть две другие формы этой процедуры, доступные для адресата специфического SQL-предложения, выбранного или из кэша курсоров, или из AutomaticWorkload Repository (AWR). В любом случае предложение будет идентифицировано передачей его SQL_ID вместо SQL-текста.
Когда задача настройки еще только успешно создана, она находится в первоначальном состоянии. Затем задача должна быть выполнена для запуска процесса настройки. Это достигается с помощью запуска процедуры execution_tuning_task, как показано ниже:
execute_tuning_task(task_name => ‘my_sql_tuning_task');
В любое время, после того как началось выполнение, пользователь может использовать соответствующую процедуру советчика для отмены, прерывания или сброса задачи. Пользователь может также проверить состояние задачи путем просмотра информации, помещенной в рабочее представление DBA_ADVISOR_LOG, или может запросить представление V$SESSIO_LOGOPS для отображения информации о прогрессе выполнения задачи. Эта информация включает оставшееся время на выполнение, количество результатов, выгоду и число предложений, использованных SQL Tuning Set для настройки.
Когда задача настройки закончена, результаты настройки могут быть визуализированы, вызовом процедуры report_tuning_task, как показано ниже: set long 10000; select report_tuning_task(task_name => ‘my_sql_tuning_task') from dual;