Принять, отключить и удалить SQL profile
OracleПроизводительностьКоманда
-- 1) Accept the profile recommended by the tuning task:
DECLARE
l_name VARCHAR2(128);
BEGIN
l_name := DBMS_SQLTUNE.ACCEPT_SQL_PROFILE(
task_name => '<task_name>',
name => 'PROF_<sql_id>',
description => 'STA recommendation, CHG-1234',
force_match => TRUE, -- also matches statements differing only in literals
replace => TRUE);
DBMS_OUTPUT.PUT_LINE('Profile: ' || l_name);
END;
/
-- 2) Profiles and the cursors using them:
SELECT name, category, status, force_matching,
TO_CHAR(created,'YYYY-MM-DD HH24:MI') AS created
FROM dba_sql_profiles
ORDER BY created DESC;
SELECT sql_id, child_number, plan_hash_value, sql_profile
FROM v$sql
WHERE sql_profile IS NOT NULL;
-- 3) Temporarily disable / drop:
EXEC DBMS_SQLTUNE.ALTER_SQL_PROFILE(name => 'PROF_<sql_id>', attribute_name => 'STATUS', value => 'DISABLED');
EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE(name => 'PROF_<sql_id>', ignore => TRUE);Что делает
SQL profile даёт оптимизатору дополнительные поправки кардинальности/селективности (OPT_ESTIMATE и аналогичные), чтобы он построил лучший план без изменения текста SQL; с FORCE_MATCH применяется и к операторам, отличающимся только литералами.
Когда использовать
Когда SQL нельзя изменить (коробочное приложение), когда STA рекомендует проверенное улучшение, или как быстрое исправление регрессии плана.
Внимание
Требует лицензии Tuning Pack. Профиль не "фиксирует" план; он корректирует оценки, поэтому план всё ещё может измениться при изменении распределения данных. Если стабильность плана обязательна, используйте SQL plan baseline. Если существуют оба, оптимизатор выбирает среди принятых планов baseline. Перед принятием всегда читайте результаты проверки (раздел отчёта 'Validation results').
Связанные материалы
- Сделать снимок AWR и сформировать отчёт AWR между двумя снимками
- Отчёт AWR diff (compare period) между двумя периодами
- Топ wait events и топ SQL из ASH за последние минуты
- Выполнить анализ ADDM и получить отчёт
- Получить отчёт SQL Monitor (выполняющийся или завершённый долгий SQL)
- Включить/выключить трассировку 10046 для сессии и обобщить её через TKPROF