Aceitar, desabilitar e remover um SQL profile
OracleDesempenhoComando
-- 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);O que faz
Um SQL profile fornece ao otimizador correções extras de cardinalidade/seletividade (OPT_ESTIMATE e similares) para que ele gere um plano melhor sem mudar o texto do SQL; com FORCE_MATCH também se aplica a comandos que diferem apenas nos literais.
Quando usar
Quando o SQL não pode ser alterado (aplicação de pacote), quando o STA recomenda uma melhoria validada ou como correção rápida para uma regressão de plano.
Atenção
Exige a licença do Tuning Pack. Um profile não "trava" o plano; ele corrige estimativas, então o plano ainda pode mudar quando a distribuição dos dados muda. Se a estabilidade do plano for obrigatória, use um SQL plan baseline. Quando ambos existem, o otimizador escolhe entre os planos aceitos do baseline. Sempre leia os resultados de validação (a seção 'Validation results' do relatório) antes de aceitar.
Relacionados
- Tirar um snapshot do AWR e gerar um relatório AWR entre dois snapshots
- Relatório AWR diff (compare period) entre dois períodos
- Principais wait events e principais SQL do ASH nos últimos minutos
- Executar uma análise ADDM e obter seu relatório
- Obter um relatório do SQL Monitor (SQL longo em execução ou concluído)
- Habilitar/desabilitar o trace 10046 de uma sessão e resumir com TKPROF