SQL Profiles ….

Ajustando um dos métodos que estavam no post anterior sobre SQL Profiles, segue uma procedure para aplicar um profile, baseado num sql_id, para aplicar com sucesso, siga os passos abaixo:

  1. Tenha em mãos o SQLID “problemático”;
  2. Tenha em mãos o SQLID com as hints que encontraste para que a query tenha uma melhor performance;
  3. Execute a procedure: apply_sqlprofile(<sqlid problemático>,<sqlid melhorado>).

Código da procedure e grants necessários:

– grant select on v_$sql to daa;

– grant execute on dba_sqltune to <<user>>;

create or replace procedure apply_sqlprofile(

v_sql_id_from dba_hist_sqlstat.sql_id%type,

v_sql_id_to dba_hist_sqlstat.sql_id%type,

v_category varchar2 default ‘DEFAULT’)

is

v_time date;

ar_profile_hints sys.sqlprof_attr;

cl_sql_text clob;

begin

select sysdate into v_time

from dual;

select extractvalue(value(d), ‘/hint’) as outline_hints bulk collect into ar_profile_hints

from xmltable(‘/*/outline_data/hint’ passing (select xmltype(other_xml) as xmlval

from v$sql_plan

where

sql_id = v_sql_id_from

and child_number = 0

and other_xml is not null) ) d;

select sql_fulltext into cl_sql_text

from v$sql

where sql_id = v_sql_id_to

and child_number = 0;

dbms_sqltune.import_sql_profile(sql_text => cl_sql_text, profile => ar_profile_hints, category => v_category, name => ‘PROFILE_’||v_sql_id_to||’_attach’);

end;

/

Saudações Vascaínas ….

Um comentário em “SQL Profiles ….

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s