{"id":392,"date":"2016-03-27T22:15:28","date_gmt":"2016-03-28T01:15:28","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=392"},"modified":"2022-07-22T15:24:02","modified_gmt":"2022-07-22T18:24:02","slug":"sql-profile-uma-poderosa-aliada-no-processo-de-tuning-2","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-uma-poderosa-aliada-no-processo-de-tuning-2\/","title":{"rendered":"SQL Profile: uma poderosa aliada no processo de Tuning"},"content":{"rendered":"\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Quantas vezes voc\u00ea encontrou uma consulta usando um \u00edndice X quando voc\u00ea queria que ela usasse o \u00edndice Y, ou uma consulta realizando &#8220;Nested loop&#8221; para fazer um &#8220;join&#8221; entre duas tabelas quando um &#8220;Hash Join&#8221; realizaria esse trabalho muito mais r\u00e1pido. Ou uma inst\u00e2ncia em que a aplica\u00e7\u00e3o de repente come\u00e7a a utilizar um plano de execu\u00e7\u00e3o ineficiente ap\u00f3s o banco de dados reiniciar. Utilizando SQL Profile podemos resolver esses problemas sem alterar uma linha de c\u00f3digo da aplica\u00e7\u00e3o.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">O que \u00e9 uma SQL Profile<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">SQL Profile s\u00e3o metadados armazenados no banco de dados que s\u00e3o compostos do c\u00f3digo da instru\u00e7\u00e3o SQL e um conjunto de sugest\u00f5es que ser\u00e3o utilizados pelo Otimizador para montar o plano de execu\u00e7\u00e3o. Ao contr\u00e1rio da &#8220;Stored Outlines&#8221;, os &#8220;Hints&#8221; armazenados na SQL Profile n\u00e3o tentam ditar as opera\u00e7\u00f5es que o Otimizador dever\u00e1 utilizar no plano de execu\u00e7\u00e3o. Em vez disso, fornecer fatores de corre\u00e7\u00e3o aritm\u00e9tica que ser\u00e3o utilizados pelo otimizador para melhorar a estimativa de cardinalidade.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Apesar da SQL Profile gerada pelo SQL Tuning Advisor n\u00e3o possuir Hints semelhantes aos utilizados pelas &#8220;Stored Outlines&#8221;, podemos criar manualmente uma SQL Profile que utiliza Hints como as &#8220;Stored Outlines&#8221; para ditar ao Otimizador como deve ser o plano de execu\u00e7\u00e3o.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Como s\u00e3o criadas as SQL Profile<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Uma SQL Profile pode ser criada atrav\u00e9s do &#8220;SQL Tuning Advisor&#8221; (STA), esse tipo SQL Profile como foi dito anteriormente n\u00e3o fixa um plano de execu\u00e7\u00e3o apenas fornece fatores de corre\u00e7\u00e3o aritm\u00e9tica para melhorar as estimativas de cardinalidade, dando ao Otimizador informa\u00e7\u00f5es mais qualificadas para escolha do plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Outra op\u00e7\u00e3o para cria\u00e7\u00e3o de SQL Profile \u00e9 utilizar o script coe_xfr_sql_profile.sql, elaborado por Carlos Sierra (Oracle Support forces), esse script gera outro script para cria\u00e7\u00e3o SQL Profile a partir das &#8220;Outlines&#8221; de um SQL_ID armazenadas na &#8220;Library Cache&#8221;. A SQL Profile gerada por este script \u00e9 diferente da gerada pelo &#8220;SQL Tuning Advisor&#8221;, os &#8220;Hints&#8221; dessa profile dizem ao Otimizador que tipo de opera\u00e7\u00f5es utilizar na elabora\u00e7\u00e3o do plano, tornando o plano de execu\u00e7\u00e3o fixo.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Exemplo pr\u00e1tico de cria\u00e7\u00e3o SQL Profile<\/span><\/h2>\n<p style=\"text-align: justify;\">A seguir vamos demonstrar a cria\u00e7\u00e3o de uma SQL Profile utilizado &#8220;SQL Tuning Advisor&#8221; e outra com o script coe_xfr_sql_profile.sql, em cada um dos exemplos vamos listar no final os &#8220;Hints&#8221; de cada uma das SQL Profile que ser\u00e3o utilizados para influenciar o Otimizador na elabora\u00e7\u00e3o do plano de execu\u00e7\u00e3o.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Cria\u00e7\u00e3o SQL Profile com STA<\/span><\/h3>\n<p><span style=\"font-size: 12pt;\">Primeiro vamos criar uma tabela que ser\u00e1 utilizada na consulta do nosso exemplo.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM V<span class=\"re0\">$VERSION<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBANNER<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nOracle Database 11g Enterprise Edition Release 11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> Production<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create table tab01<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"br0\">&#40;<\/span>pk_col number primary <a href=\"http:\/\/www.php.net\/key\"><span class=\"kw3\">key<\/span><\/a><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;col1 number<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp;col2 varchar2 <span class=\"br0\">&#40;<\/span><span class=\"nu0\">30<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;col3 <a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">date<\/span><\/a><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp;col4 varchar2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create sequence tab01_seq<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nSequ\u00eancia criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> begin<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"kw1\">for<\/span> i in <span class=\"nu0\">1<\/span><span class=\"sy0\">..<\/span><span class=\"nu0\">100000<\/span> loop<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;insert into tab01 <span class=\"br0\">&#40;<\/span>pk_col<span class=\"sy0\">,<\/span> col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3<span class=\"sy0\">,<\/span> col4<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp;select tab01_seq<span class=\"sy0\">.<\/span>nextval<span class=\"sy0\">,<\/span> tab01_seq<span class=\"sy0\">.<\/span>currval<span class=\"sy0\">,<\/span> <span class=\"st_h\">'asddsadasd'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;sysdate\u00cd<span class=\"br0\">&#40;<\/span>tab01_seq<span class=\"sy0\">.<\/span>currval<span class=\"sy0\">\/<\/span><span class=\"nu0\">3600<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Y'<\/span> from dual<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a> loop<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> from tab01<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; <span class=\"nu0\">100000<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> linha selecionada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update tab01 set col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">100000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">99999<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update tab01 set col4 <span class=\"sy0\">=<\/span> <span class=\"st_h\">'N'<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">99<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> commit<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create index tab01_col1 on tab01<span class=\"br0\">&#40;<\/span>col1<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n\u00cdndice criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span> tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'TAB01'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for all columns size auto'<\/span><span class=\"sy0\">,<\/span>cascade<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p><span style=\"font-size: 12pt;\">Agora vamos executar uma consulta e verificar o plano de execu\u00e7\u00e3o gerado pelo Otimizador<\/span>.<\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level<span class=\"sy0\">=<\/span>ALL<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSess\u00e3o alterada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 COL2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COL3<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">--------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">77150<\/span> asddsadasd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu8\">06<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">16<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> linha selecionada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>find_sql<br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\n<span class=\"st_h\">'= INFORME UM DOS PARAMETROS ABAIXO: &nbsp;SQL_TEXT OU &nbsp;SQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ='<\/span><br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\nSQL_TEXT<span class=\"sy0\">..:<\/span> from tab01 where col1<br \/>\nSQL_ID<span class=\"sy0\">....:<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; CHILD &nbsp;PLAN_HASH &nbsp; &nbsp; &nbsp;EXECS &nbsp; &nbsp; &nbsp; &nbsp; ETIME &nbsp; &nbsp; AVG_ETIME USERNAME &nbsp; &nbsp; &nbsp;SQL_TEXT<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-------------<\/span> <span class=\"sy0\">-------------<\/span> <span class=\"sy0\">-------------<\/span> <span class=\"sy0\">-----------------------------------------<\/span><br \/>\narrf7tftg4pxg &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> <span class=\"nu0\">2044041692<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.03<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.01<\/span> VALTER &nbsp; &nbsp; &nbsp; &nbsp;select col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><br \/>\n<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>dplan<br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\n<span class=\"st_h\">'= INFORME UM DOS PARAMETROS ABAIXO: &nbsp;SQL_ID E\/OU &nbsp;CHILD_NO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ='<\/span><br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\nSQL_ID<span class=\"sy0\">...:<\/span> arrf7tftg4pxg<br \/>\nCHILD_NO<span class=\"sy0\">.:<\/span> <span class=\"nu0\">0<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;arrf7tftg4pxg<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2044041692<\/span><br \/>\n<br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">137<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">499<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS FULL<span class=\"sy0\">|<\/span> TAB01 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">50000<\/span> <span class=\"sy0\">|<\/span> &nbsp;1123K<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">137<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">02<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">499<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">77150<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Podemos observar que o plano de execu\u00e7\u00e3o gerado pelo Otimizador faz um &#8220;table full scan&#8221; na tabela TAB01, e acessa 499 Buffers para retornar 1 linha. Na sequ\u00eancia vamos utilizar &#8220;SQL Tuning Advisor&#8221; para verificar se o Otimizador consegue gerar uma plano de execu\u00e7\u00e3o de melhor qualidade.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>create_tuning_task<span class=\"sy0\">.<\/span>sql<span class=\"sy0\">;<\/span><br \/>\nTask_Name<span class=\"sy0\">:<\/span> tuning_arrf7tftg4pxg<br \/>\nInforme o valor para sql_id<span class=\"sy0\">:<\/span> arrf7tftg4pxg<br \/>\nInforme o valor para time_limit<span class=\"sy0\">:<\/span> <span class=\"nu0\">3000<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nRECOMMENDATIONS<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nGENERAL INFORMATION SECTION<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\nTuning Task Name &nbsp; <span class=\"sy0\">:<\/span> tuning_arrf7tftg4pxg<br \/>\nTuning Task Owner &nbsp;<span class=\"sy0\">:<\/span> VALTER<br \/>\nWorkload Type &nbsp; &nbsp; &nbsp;<span class=\"sy0\">:<\/span> Single SQL Statement<br \/>\nScope &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">:<\/span> COMPREHENSIVE<br \/>\n<a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> Limit<span class=\"br0\">&#40;<\/span>seconds<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">3000<\/span><br \/>\nCompletion Status &nbsp;<span class=\"sy0\">:<\/span> COMPLETED<br \/>\nStarted at &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">27<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">2016<\/span> <span class=\"nu0\">11<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">53<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">33<\/span><br \/>\nCompleted at &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">27<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">2016<\/span> <span class=\"nu0\">11<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">53<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">36<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\nSchema Name<span class=\"sy0\">:<\/span> VALTER<br \/>\nSQL ID &nbsp; &nbsp; <span class=\"sy0\">:<\/span> arrf7tftg4pxg<br \/>\nSQL Text &nbsp; <span class=\"sy0\">:<\/span> select col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\nFINDINGS SECTION <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span> finding<span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span><span class=\"sy0\">-<\/span> SQL Profile Finding <span class=\"br0\">&#40;<\/span>see explain plans section below<span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">--------------------------------------------------------<\/span><br \/>\n&nbsp; Foi encontrado um plano de execu\u00e7\u00e3o potencialmente melhor para esta<br \/>\n&nbsp; instru\u00e7\u00e3o<span class=\"sy0\">.<\/span><br \/>\n<br \/>\n&nbsp; Recommendation <span class=\"br0\">&#40;<\/span>estimated benefit<span class=\"sy0\">:<\/span> <span class=\"nu19\">99.39<\/span><span class=\"sy0\">%<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"sy0\">------------------------------------------<\/span><br \/>\n&nbsp; <span class=\"sy0\">-<\/span> Considere a aceita\u00e7\u00e3o <span class=\"kw1\">do<\/span> perfil SQL recomendado<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; execute dbms_sqltune<span class=\"sy0\">.<\/span>accept_sql_profile<span class=\"br0\">&#40;<\/span>task_name <span class=\"sy0\">=&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st_h\">'tuning_arrf7tftg4pxg'<\/span><span class=\"sy0\">,<\/span> task_owner <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'VALTER'<\/span><span class=\"sy0\">,<\/span> replace <span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; Validation results<br \/>\n&nbsp; <span class=\"sy0\">------------------<\/span><br \/>\n&nbsp; O SQL profile foi testado executando<span class=\"sy0\">-<\/span>se tanto o seu plano quanto o plano<br \/>\n&nbsp; original e medindo suas respectivas estat\u00edsticas de execu\u00e7\u00e3o<span class=\"sy0\">.<\/span> Um plano pode<br \/>\n&nbsp; ter sido somente parcialmente executado se o outro puder ser executado at\u00e9 a<br \/>\n&nbsp; conclus\u00e3o em menos tempo<span class=\"sy0\">.<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Original Plan &nbsp;With SQL Profile &nbsp;<span class=\"sy0\">%<\/span> Improved<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">-------------<\/span> &nbsp;<span class=\"sy0\">----------------<\/span> &nbsp;<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; Completion Status<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COMPLETE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COMPLETE<br \/>\n&nbsp; Elapsed <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> <span class=\"br0\">&#40;<\/span>s<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.002539<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.000041<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu19\">98.38<\/span> <span class=\"sy0\">%<\/span><br \/>\n&nbsp; CPU <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> <span class=\"br0\">&#40;<\/span>s<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.002599<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">100<\/span> <span class=\"sy0\">%<\/span><br \/>\n&nbsp; User I<span class=\"sy0\">\/<\/span>O <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> <span class=\"br0\">&#40;<\/span>s<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Buffer Gets<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">499<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu19\">99.39<\/span> <span class=\"sy0\">%<\/span><br \/>\n&nbsp; Physical Read Requests<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Physical Write Requests<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Physical Read Bytes<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Physical Write Bytes<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Rows Processed<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><br \/>\n&nbsp; Fetches<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><br \/>\n&nbsp; Executions<span class=\"sy0\">:<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><br \/>\n<br \/>\n&nbsp; Notes<br \/>\n&nbsp; <span class=\"sy0\">-----<\/span><br \/>\n&nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">.<\/span> <span class=\"kw1\">As<\/span> estat\u00edsticas para the original plan foram calculadas com m\u00e9dia com<br \/>\n&nbsp; base em <span class=\"nu0\">10<\/span> execu\u00e7\u00f5es<span class=\"sy0\">.<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">.<\/span> <span class=\"kw1\">As<\/span> estat\u00edsticas para the SQL profile plan foram calculadas com m\u00e9dia com<br \/>\n&nbsp; base em <span class=\"nu0\">10<\/span> execu\u00e7\u00f5es<span class=\"sy0\">.<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\nEXPLAIN PLANS SECTION<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span><span class=\"sy0\">-<\/span> Original With Adjusted Cost<br \/>\n<span class=\"sy0\">------------------------------<\/span><br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2044041692<\/span><br \/>\n<br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp;<span class=\"sy0\">|<\/span> Rows &nbsp;<span class=\"sy0\">|<\/span> Bytes <span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; &nbsp; <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">23<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">137<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">02<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS FULL<span class=\"sy0\">|<\/span> TAB01 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">23<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">137<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">02<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">77150<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">2<\/span><span class=\"sy0\">-<\/span> Using SQL Profile<br \/>\n<span class=\"sy0\">--------------------<\/span><br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">330808811<\/span><br \/>\n<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Rows &nbsp;<span class=\"sy0\">|<\/span> Bytes <span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; &nbsp; <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">23<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> TAB01 &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">23<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> TAB01_COL1 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">77150<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">No relat\u00f3rio acima podemos verificar que o STA recomenda a cria\u00e7\u00e3o de uma SQL Profile que vai proporcionar uma melhoria de 99.39% no plano de execu\u00e7\u00e3o, se observarmos o plano de execu\u00e7\u00e3o sugerido vamos constatar a utiliza\u00e7\u00e3o do \u00edndice TAB01_COL1 para acessar as linhas solicitadas pela consulta.<\/span><br><span style=\"font-size: 12pt;\">Para validar a sugest\u00e3o do STA vamos criar a SQL Profile sugerida e executar a consulta novamente.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> execute dbms_sqltune<span class=\"sy0\">.<\/span>accept_sql_profile<span class=\"br0\">&#40;<\/span>task_name <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'tuning_arrf7tftg4pxg'<\/span><span class=\"sy0\">,<\/span> task_owner <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'VALTER'<\/span><span class=\"sy0\">,<\/span> replace <span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> alter <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">system<\/span><\/a> <a href=\"http:\/\/www.php.net\/flush\"><span class=\"kw3\">flush<\/span><\/a> shared_pool<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSistema alterado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> select col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 COL2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COL3<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">--------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">77150<\/span> asddsadasd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu8\">06<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">16<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>dplan<br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\n<span class=\"st_h\">'= INFORME UM DOS PARAMETROS ABAIXO: &nbsp;SQL_ID E\/OU &nbsp;CHILD_NO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ='<\/span><br \/>\n<span class=\"st_h\">'========================================================================'<\/span><br \/>\nSQL_ID<span class=\"sy0\">...:<\/span> arrf7tftg4pxg<br \/>\nCHILD_NO<span class=\"sy0\">.:<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;arrf7tftg4pxg<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">330808811<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> TAB01 &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">23<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> TAB01_COL1 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">77150<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nNote<br \/>\n<span class=\"sy0\">-----<\/span><br \/>\n&nbsp; &nbsp;<span class=\"sy0\">-<\/span> SQL profile SYS_SQLPROF_0153b8917ef00000 used <span class=\"kw1\">for<\/span> this statement<br \/>\n&nbsp; &nbsp;<span class=\"sy0\">-<\/span> Warning<span class=\"sy0\">:<\/span> basic plan statistics not available<span class=\"sy0\">.<\/span> These are only collected when<span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">*<\/span> hint <span class=\"st_h\">'gather_plan_statistics'<\/span> is used <span class=\"kw1\">for<\/span> the statement or<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">*<\/span> parameter <span class=\"st_h\">'statistics_level'<\/span> is set to <span class=\"st_h\">'ALL'<\/span><span class=\"sy0\">,<\/span> at session or <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">system<\/span><\/a> level<br \/>\n<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Ao examinar o plano de execu\u00e7\u00e3o da consulta verificamos que o plano sugerido (que usa o \u00edndice TAB01_COL1) foi utilizado e na se\u00e7\u00e3o &#8220;Note&#8221; encontramos a confirma\u00e7\u00e3o da utiliza\u00e7\u00e3o da SQL Profile &#8220;SQL profile SYS_SQLPROF_0153b8917ef00000 used for this statement&#8221;.<\/span><br><span style=\"font-size: 12pt;\">Agora vamos verificar quais foram os &#8220;Hints&#8221; utilizados por essa SQL Profile para influenciar o Otimizador na cria\u00e7\u00e3o do plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> conn sys<span class=\"sy0\">@<\/span>lab11 <span class=\"kw1\">as<\/span> sysdba<span class=\"sy0\">;<\/span><br \/>\nInforme a senha<span class=\"sy0\">:<\/span><br \/>\nConectado<span class=\"sy0\">.<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>sql_profile_hints11<span class=\"sy0\">;<\/span><br \/>\nInforme o valor para name<span class=\"sy0\">:<\/span> SYS_SQLPROF_0153b8917ef00000<br \/>\n<br \/>\nHINT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nOPT_ESTIMATE<span class=\"br0\">&#40;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span><span class=\"sy0\">,<\/span> TABLE<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;TAB01&quot;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span><span class=\"sy0\">,<\/span> SCALE_ROWS<span class=\"sy0\">=<\/span><span class=\"nu19\">2e-05<\/span><span class=\"br0\">&#41;<\/span><br \/>\nOPT_ESTIMATE<span class=\"br0\">&#40;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span><span class=\"sy0\">,<\/span> INDEX_SCAN<span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;TAB01&quot;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;TAB01_COL1&quot;<\/span><span class=\"sy0\">,<\/span> SCALE_ROWS<span class=\"sy0\">=<\/span><span class=\"nu19\">2e-05<\/span><span class=\"br0\">&#41;<\/span><br \/>\nOPTIMIZER_FEATURES_ENABLE<span class=\"br0\">&#40;<\/span><span class=\"kw1\">default<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Cria\u00e7\u00e3o SQL Profile com script coe_xfr_sql_profile<\/span><\/h3>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos criar uma SQL Profile do plano otimizado pelo STA, utilizando o script coe_xfr_sql_profile.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL<span class=\"sy0\">&gt;<\/span> select col1<span class=\"sy0\">,<\/span> col2<span class=\"sy0\">,<\/span> col3 from tab01 where col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">77150<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 COL2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COL3<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">--------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">77150<\/span> asddsadasd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu8\">06<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">16<\/span><br \/>\n<br \/>\nSQL<span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>coe_xfr_sql_profile<span class=\"sy0\">.<\/span>sql<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nParameter <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/span><br \/>\nSQL_ID <span class=\"br0\">&#40;<\/span>required<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nInforme o valor para <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/span> arrf7tftg4pxg<br \/>\n<br \/>\n<br \/>\nPLAN_HASH_VALUE AVG_ET_SECS<br \/>\n<span class=\"sy0\">---------------<\/span> <span class=\"sy0\">-----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">330808811<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">,<\/span><span class=\"nu8\">011<\/span><br \/>\n<br \/>\nParameter <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span><br \/>\nPLAN_HASH_VALUE <span class=\"br0\">&#40;<\/span>required<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nInforme o valor para <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> <span class=\"nu0\">330808811<\/span><br \/>\n<br \/>\nValues passed<span class=\"sy0\">:<\/span><br \/>\n~~~~~~~~~~~~~<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;arrf7tftg4pxg&quot;<\/span><br \/>\nPLAN_HASH_VALUE<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;330808811&quot;<\/span><br \/>\n<br \/>\n<br \/>\nExecute coe_xfr_sql_profile_arrf7tftg4pxg_330808811<span class=\"sy0\">.<\/span>sql<br \/>\non TARGET <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">system<\/span><\/a> in order to create a custom SQL Profile<br \/>\nwith plan <span class=\"nu0\">330808811<\/span> linked to adjusted sql_text<span class=\"sy0\">.<\/span><br \/>\n<br \/>\n<br \/>\nCOE_XFR_SQL_PROFILE completed<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A execu\u00e7\u00e3o do script coe_xfr_sql_profile produz um outro script no diret\u00f3rio &#8220;c:\\temp&#8221; preparado para gerar uma SQL Profile, vamos executar esse script e verificar quais s\u00e3o os &#8220;Hints&#8221; utilizados por essa profile para influenciar o Otimizador na cria\u00e7\u00e3o do plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p>.<\/p>\n\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL<span class=\"sy0\">&gt;@<\/span>c<span class=\"sy0\">:<\/span>\\temp\\coe_xfr_sql_profile_arrf7tftg4pxg_330808811<span class=\"sy0\">.<\/span>sql<span class=\"sy0\">;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM <span class=\"re0\">$Header<\/span><span class=\"sy0\">:<\/span> <span class=\"nu19\">215187.1<\/span> coe_xfr_sql_profile_arrf7tftg4pxg_330808811<span class=\"sy0\">.<\/span>sql 11<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>1<span class=\"sy0\">.<\/span>4 <span class=\"nu0\">2016<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">03<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">27<\/span> csierra $<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM Copyright <span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span> <span class=\"nu0\">2000<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">2010<\/span><span class=\"sy0\">,<\/span> Oracle Corporation<span class=\"sy0\">.<\/span> All rights reserved<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM AUTHOR<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; carlos<span class=\"sy0\">.<\/span>sierra<span class=\"sy0\">@<\/span>oracle<span class=\"sy0\">.<\/span>com<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM SCRIPT<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; coe_xfr_sql_profile_arrf7tftg4pxg_330808811<span class=\"sy0\">.<\/span>sql<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM DESCRIPTION<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; This script is generated by coe_xfr_sql_profile<span class=\"sy0\">.<\/span>sql<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; It contains the SQL<span class=\"sy0\">*<\/span>Plus commands to create a custom<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; SQL Profile <span class=\"kw1\">for<\/span> SQL_ID arrf7tftg4pxg based on plan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; value <span class=\"nu0\">330808811<\/span><span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; The custom SQL Profile to be created by this script<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; will affect plans <span class=\"kw1\">for<\/span> SQL commands with signature<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; matching the one <span class=\"kw1\">for<\/span> SQL Text below<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; Review SQL Text and adjust accordingly<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM PARAMETERS<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; None<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM EXAMPLE<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; SQL<span class=\"sy0\">&gt;<\/span> START coe_xfr_sql_profile_arrf7tftg4pxg_330808811<span class=\"sy0\">.<\/span>sql<span class=\"sy0\">;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM NOTES<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">.<\/span> Should be run <span class=\"kw1\">as<\/span> <a href=\"http:\/\/www.php.net\/system\"><span class=\"kw3\">SYSTEM<\/span><\/a> or SYSDBA<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">.<\/span> User must have CREATE ANY SQL PROFILE privilege<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; <span class=\"nu0\">3<\/span><span class=\"sy0\">.<\/span> SOURCE and TARGET systems can be the same or similar<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; <span class=\"nu0\">4<\/span><span class=\"sy0\">.<\/span> To drop this custom SQL Profile after it has been created<span class=\"sy0\">:<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp;<a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">EXEC<\/span><\/a> DBMS_SQLTUNE<span class=\"sy0\">.<\/span>DROP_SQL_PROFILE<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'coe_arrf7tftg4pxg_330808811'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp; <span class=\"nu0\">5<\/span><span class=\"sy0\">.<\/span> Be aware that using DBMS_SQLTUNE requires a license<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM &nbsp;<span class=\"kw1\">for<\/span> the Oracle Tuning <a href=\"http:\/\/www.php.net\/pack\"><span class=\"kw3\">Pack<\/span><\/a><span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>WHENEVER SQLERROR <a href=\"http:\/\/www.php.net\/exit\"><span class=\"kw3\">EXIT<\/span><\/a> SQL<span class=\"sy0\">.<\/span>SQLCODE<span class=\"sy0\">;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span><span class=\"kw2\">VAR<\/span> signature NUMBER<span class=\"sy0\">;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>REM<br \/>\nSQL<span class=\"sy0\">&gt;<\/span><span class=\"kw2\">DECLARE<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;sql_txt CLOB<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;h &nbsp; &nbsp; &nbsp; SYS<span class=\"sy0\">.<\/span>SQLPROF_ATTR<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp;BEGIN<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;sql_txt <span class=\"sy0\">:=<\/span> q<span class=\"st_h\">'[<br \/>\n&nbsp; 6 &nbsp;select col1, col2, col3 from tab01 where col1 = 77150<br \/>\n&nbsp; 7 &nbsp;]'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;h <span class=\"sy0\">:=<\/span> SYS<span class=\"sy0\">.<\/span>SQLPROF_ATTR<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp;q<span class=\"st_h\">'[BEGIN_OUTLINE_DATA]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp;q<span class=\"st_h\">'[IGNORE_OPTIM_EMBEDDED_HINTS]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp;q<span class=\"st_h\">'[OPTIMIZER_FEATURES_ENABLE('<\/span>11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"st_h\">')]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp;q<span class=\"st_h\">'[DB_VERSION('<\/span>11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"st_h\">')]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">13<\/span> &nbsp;q<span class=\"st_h\">'[ALL_ROWS]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">14<\/span> &nbsp;q<span class=\"st_h\">'[OUTLINE_LEAF(@&quot;SEL$1&quot;)]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">15<\/span> &nbsp;q<span class=\"st_h\">'[INDEX_RS_ASC(@&quot;SEL$1&quot; &quot;TAB01&quot;@&quot;SEL$1&quot; (&quot;TAB01&quot;.&quot;COL1&quot;))]'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">16<\/span> &nbsp;q<span class=\"st_h\">'[END_OUTLINE_DATA]'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">17<\/span> &nbsp;<span class=\"sy0\">:<\/span>signature <span class=\"sy0\">:=<\/span> DBMS_SQLTUNE<span class=\"sy0\">.<\/span>SQLTEXT_TO_SIGNATURE<span class=\"br0\">&#40;<\/span>sql_txt<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">18<\/span> &nbsp;DBMS_SQLTUNE<span class=\"sy0\">.<\/span>IMPORT_SQL_PROFILE <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp;<span class=\"nu0\">19<\/span> &nbsp;sql_text &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span> sql_txt<span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">20<\/span> &nbsp;profile &nbsp; &nbsp; <span class=\"sy0\">=&gt;<\/span> h<span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">21<\/span> &nbsp;name &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'coe_arrf7tftg4pxg_330808811'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">22<\/span> &nbsp;description <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'coe arrf7tftg4pxg 330808811 '<\/span><span class=\"sy0\">||:<\/span>signature<span class=\"sy0\">||<\/span><span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">23<\/span> &nbsp;category &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DEFAULT'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">24<\/span> &nbsp;validate &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">25<\/span> &nbsp;replace &nbsp; &nbsp; <span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">TRUE<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">26<\/span> &nbsp;force_match <span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">FALSE<\/span> <span class=\"coMULTI\">\/* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) *\/<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">27<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">28<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL<span class=\"sy0\">&gt;<\/span>WHENEVER SQLERROR <span class=\"kw1\">CONTINUE<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span>SET <span class=\"kw1\">ECHO<\/span> OFF<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SIGNATURE<br \/>\n<span class=\"sy0\">---------------------<\/span><br \/>\n&nbsp; <span class=\"nu0\">9480737169037303819<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"sy0\">...<\/span> manual custom SQL Profile has been created<br \/>\n<br \/>\n<br \/>\nCOE_XFR_SQL_PROFILE_arrf7tftg4pxg_330808811 completed<br \/>\nSQL<span class=\"sy0\">&gt;<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span> conn sys<span class=\"sy0\">@<\/span>lab11 <span class=\"kw1\">as<\/span> sysdba<br \/>\nInforme a senha<span class=\"sy0\">:<\/span><br \/>\nConectado<span class=\"sy0\">.<\/span><br \/>\nSQL<span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>sql_profile_hints11<span class=\"sy0\">;<\/span><br \/>\nInforme o valor para name<span class=\"sy0\">:<\/span> coe_arrf7tftg4pxg_330808811<br \/>\n<br \/>\nHINT<br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------<\/span><br \/>\nBEGIN_OUTLINE_DATA<br \/>\nIGNORE_OPTIM_EMBEDDED_HINTS<br \/>\nOPTIMIZER_FEATURES_ENABLE<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'11.2.0.4'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nDB_VERSION<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'11.2.0.4'<\/span><span class=\"br0\">&#41;<\/span><br \/>\nALL_ROWS<br \/>\nOUTLINE_LEAF<span class=\"br0\">&#40;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nINDEX_RS_ASC<span class=\"br0\">&#40;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span> <span class=\"st0\">&quot;TAB01&quot;<\/span><span class=\"sy0\">@<\/span><span class=\"st0\">&quot;SEL<span class=\"es4\">$1<\/span>&quot;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;TAB01&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nEND_OUTLINE_DATA<br \/>\n<br \/>\nSQL<span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<p>.<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Observando os &#8220;Hints&#8221; utilizados na profile gerada pelo script verificamos que eles d\u00e3o instru\u00e7\u00f5es especificas para Otimizador produzir o plano de execu\u00e7\u00e3o, tais como o Hint INDEX_RS_ASC que sugere ao Otimizador para utilizar a opera\u00e7\u00e3o INDEX RANGE SCAN para acessar o \u00edndice TAB01_COL1.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Conclus\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A utiliza\u00e7\u00e3o de SQL Profile no processo de Tuning de consultas abre um leque de possibilidades, seja utilizando o SQL Tuning Advisor ou o script coe_xfr_sql_profile. Esse recurso agiliza o processo de Tuning pois n\u00e3o necessita de altera\u00e7\u00e3o no c\u00f3digo da aplica\u00e7\u00e3o e o SQL Tuning Advisor ajuda no processo de Tuning pois ele tem condi\u00e7\u00f5es de reparar aqueles planos de baixa qualidade produzidos pelo Otimizador que tem um tempo extremamente limitado para analisar e gerar um plano de execu\u00e7\u00e3o para instru\u00e7\u00e3o SQL quando ela \u00e9 submetida para execu\u00e7\u00e3o no banco.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Scripts<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Abaixo a lista o scripts utilizados nesse artigo:&nbsp;<\/span><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/find_sql.pdf\" target=\"_blank\" rel=\"noopener\">find_sql<\/a>&nbsp;<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/dplan.pdf\" target=\"_blank\" rel=\"noopener\">dplan<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/create_tuning_task.pdf\" target=\"_blank\" rel=\"noopener\">create_tuning_task<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/sql_profile_hints11.pdf\" target=\"_blank\" rel=\"noopener\">sql_profile_hints11<\/a><\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/coe_xfr_sql_profile.pdf\" target=\"_blank\" rel=\"noopener\"><strong><span style=\"font-size: 12pt;\">coe_xfr_sql_profile<\/span><\/strong><\/a><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h2>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/kerryosborne.oracle-guy.com\/2009\/04\/oracle-sql-profiles\/\" target=\"_blank\" rel=\"noopener\">http:\/\/kerryosborne.oracle-guy.com\/2009\/04\/oracle-sql-profiles\/<\/a><\/span><\/strong><\/p>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"https:\/\/asktom.oracle.com\/pls\/asktom\/f?p=100:11:::::P11_QUESTION_ID:22829633914543\" target=\"_blank\" rel=\"noopener\">https:\/\/asktom.oracle.com\/pls\/asktom\/f?p=100:11:::::P11_QUESTION_ID:22829633914543<\/a><\/span><\/strong><\/p>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"https:\/\/carlos-sierra.net\/2012\/04\/09\/custom-sql-profile-and-plan-stability-on-10g\/\" target=\"_blank\" rel=\"noopener\">https:\/\/carlos-sierra.net\/2012\/04\/09\/custom-sql-profile-and-plan-stability-on-10g\/<\/a><\/span><\/strong><\/p>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"http:\/\/docs.oracle.com\/cd\/E28271_01\/server.1111\/e16638\/sql_tune.htm#i36634\" target=\"_blank\" rel=\"noopener\">http:\/\/docs.oracle.com\/cd\/E28271_01\/server.1111\/e16638\/sql_tune.htm#i36634<\/a><\/span><\/strong><\/p>\n<p><a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1255\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2018\/10\/promo_cur02.jpg\" alt=\"Promo-D75L\" width=\"330\" height=\"242\"><\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/l6OphhTle9I\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1215\" src=\"http:\/\/dbtimewizard.com.br\/wp-content\/uploads\/2018\/01\/video-02-300x168.jpg\" alt=\"video-02\" width=\"330\" height=\"242\"><\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">&nbsp;<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Quantas vezes voc\u00ea encontrou uma consulta usando um \u00edndice X quando voc\u00ea queria que ela usasse o \u00edndice Y, ou uma consulta realizando &#8220;Nested loop&#8221; para fazer um &#8220;join&#8221; entre duas tabelas quando um &#8220;Hash Join&#8221; realizaria esse trabalho muito mais r\u00e1pido. Ou uma inst\u00e2ncia em que a aplica\u00e7\u00e3o de repente come\u00e7a a utilizar um plano de execu\u00e7\u00e3o ineficiente ap\u00f3s<\/p>\n","protected":false},"author":2,"featured_media":513,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[6,42,10,118,117,116],"class_list":["post-392","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-profile","tag-cbo","tag-cost-base-optimizer","tag-otimizador","tag-sql-profile","tag-sql-tuning-advisor","tag-sta"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/comments?post=392"}],"version-history":[{"count":16,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/392\/revisions"}],"predecessor-version":[{"id":2356,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/392\/revisions\/2356"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/513"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=392"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}