{"id":1303,"date":"2017-12-10T21:42:06","date_gmt":"2017-12-10T23:42:06","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=1303"},"modified":"2019-11-11T18:48:05","modified_gmt":"2019-11-11T21:48:05","slug":"sql-tuning-advisor-voce-acredita-em-papai-noel","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/sql-tuning-advisor-voce-acredita-em-papai-noel\/","title":{"rendered":"SQL Tuning Advisor: Voc\u00ea acredita em papai noel?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><a href=\"http:\/\/dbtimewizard.com.br\/blog\/9-ferramentas-de-tuning-gratis-que-voce-deve-conhecer\/\" target=\"_blank\"><strong>Ferramentas de Tuning<\/strong><\/a> s\u00e3o fant\u00e1sticos recursos que nos ajudam muito em nosso trabalho, a m\u00e1 noticia \u00e9 que diferente do que muito gente pensa elas n\u00e3o fazem todo o trabalho. Existem algumas ferramentas que at\u00e9 se prop\u00f5e a fazer o trabalho de Tuning completo, como a ferramenta da Oracle SQL Tuning Advisor (STA), porem quem j\u00e1 utilizou esta ferramenta sabe que ela ainda precisa evoluir muito para atender as nossas expectativas. Neste artigo vamos utilizar o STA para fazer o Tuning de uma consulta simples e vamos constatar que ele n\u00e3o consegue oferecer a melhor solu\u00e7\u00e3o de Tuning.<\/span><\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n<strong><span style=\"font-size: 12pt;\">Para realizar esta simula\u00e7\u00e3o vamos:<\/span><\/strong><\/p>\n<p><span style=\"font-size: 12pt;\">1) Criar\u00a0uma tabela com seu respectivo \u00edndice para simula\u00e7\u00e3o da consulta<\/span><br \/>\n<span style=\"font-size: 12pt;\">2) Executar a consulta normalmente <\/span><br \/>\n<span style=\"font-size: 12pt;\">3) Utilizar o STA para fazer o Tuning da consulta<\/span><br \/>\n<span style=\"font-size: 12pt;\">4) Aplicar a solu\u00e7\u00e3o proposta pelo STA<\/span><br \/>\n<span style=\"font-size: 12pt;\">5) Aplicar uma solu\u00e7\u00e3o de Tuning alternativa<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">1) Criar a tabela da simula\u00e7\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para esta simula\u00e7\u00e3o vamos criar uma tabela clone da tabela SALES do esquema SH,\u00a0nesta tabela vamos criar um \u00edndice BTREE composto por dois campos da tabela e gerar as estat\u00edsticas.<\/span><\/p>\n<p>&nbsp;<\/p>\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 \/><\/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> 64bit Production<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create table VENDAS <span class=\"kw1\">as<\/span> select <span class=\"sy0\">*<\/span> from SH<span class=\"sy0\">.<\/span>SALES<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create index VENDAS_PROD_CUST_IDX on VENDAS<span class=\"br0\">&#40;<\/span>PROD_ID<span class=\"sy0\">,<\/span>CUST_ID<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><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\">'VENDAS'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR ALL INDEXED COLUMNS SIZE 254'<\/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<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2) Executar a consulta normalmente<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos executar uma consulta simples e verificar o plano de execu\u00e7\u00e3o que o Otimizador vai criar.<\/span><\/p>\n<p>&nbsp;<\/p>\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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> set <span class=\"kw1\">echo<\/span> off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set tab off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set lines <span class=\"nu0\">300<\/span> pages <span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM vendas<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nAMOUNT_SOLD<br \/>\n<span class=\"sy0\">-----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">907<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">98<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%DBTW111%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n4wnsfqhdwmfyg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'basic iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'basic iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'4wnsfqhdwmfyg'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'basic iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------<\/span><br \/>\nEXPLAINED SQL STATEMENT<span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold &nbsp; FROM vendas &nbsp;WHERE<br \/>\ncust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/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\">3725955559<\/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;<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> 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; &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=\"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.02<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4440<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/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.02<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4440<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS FULL<span class=\"sy0\">|<\/span> VENDAS <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">130<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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.02<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4440<\/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> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">20<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">No plano de execu\u00e7\u00e3o podemos verificar que o Otimizador decidiu acessar a tabela utilizando a opera\u00e7\u00e3o TABLE ACCESS FULL apesar de existir um \u00edndice com a coluna que foi utilizada como filtro na cl\u00e1usula WHERE. Caso tenha curiosidade de saber por que o Otimizador n\u00e3o utilizou o \u00edndice leia o artigo: <a href=\"http:\/\/dbtimewizard.com.br\/blog\/a-ordem-das-colunas-num-indice-composto-faz-diferenca\/\" target=\"_blank\"><strong>A ordem das colunas num \u00edndice composto faz diferen\u00e7a?<\/strong><\/a><\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">3) Utilizar o STA para fazer o Tuning da consulta<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos utilizar o SQL Tuning Advisor para analisar o plano de execu\u00e7\u00e3o da consulta e verificar as solu\u00e7\u00f5es de melhoria propostas. Vale lembrar que a utiliza\u00e7\u00e3o do STA est\u00e1 condicionada a aquisi\u00e7\u00e3o das OPTIONS DIAGNOSTIC &amp; TUNING PACK.<\/span><\/p>\n<p>&nbsp;<\/p>\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 \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SET LONG <span class=\"nu0\">10000<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SET PAGESIZE <span class=\"nu0\">9999<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SET LINESIZE <span class=\"nu0\">155<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set verify off<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> col recommendations <span class=\"kw1\">for<\/span> a150<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"kw2\">DECLARE<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; ret_val VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">4000<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;BEGIN<br \/>\n&nbsp; <span class=\"nu0\">6<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;ret_val <span class=\"sy0\">:=<\/span> dbms_sqltune<span class=\"sy0\">.<\/span>create_tuning_task<span class=\"br0\">&#40;<\/span>task_name<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'Task_name-4wnsfqhdwmfyg'<\/span><span class=\"sy0\">,<\/span> sql_id<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'4wnsfqhdwmfyg'<\/span><span class=\"sy0\">,<\/span> time_limit<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">120<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp;dbms_sqltune<span class=\"sy0\">.<\/span>execute_tuning_task<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Task_name-4wnsfqhdwmfyg'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span><br \/>\n&nbsp;<span class=\"nu0\">12<\/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\">13<\/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 DBMS_SQLTUNE<span class=\"sy0\">.<\/span>report_tuning_task<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Task_name-4wnsfqhdwmfyg'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">AS<\/span> recommendations FROM dual<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> Task_name<span class=\"sy0\">-<\/span>4wnsfqhdwmfyg<br \/>\nTuning Task Owner &nbsp;<span class=\"sy0\">:<\/span> CURSO01<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\">120<\/span><br \/>\nCompletion Status &nbsp;<span class=\"sy0\">:<\/span> COMPLETED<br \/>\nStarted at &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"nu0\">12<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">06<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">2017<\/span> <span class=\"nu0\">18<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">36<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">45<\/span><br \/>\nCompleted at &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"nu0\">12<\/span><span class=\"sy0\">\/<\/span><span class=\"nu8\">06<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">2017<\/span> <span class=\"nu0\">18<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">36<\/span><span class=\"sy0\">:<\/span><span class=\"nu0\">46<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------<\/span><br \/>\nSchema Name<span class=\"sy0\">:<\/span> CURSO01<br \/>\nSQL ID &nbsp; &nbsp; <span class=\"sy0\">:<\/span> 4wnsfqhdwmfyg<br \/>\nSQL Text &nbsp; <span class=\"sy0\">:<\/span> SELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM vendas<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WHERE cust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/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\">98.17<\/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\">'Task_name-4wnsfqhdwmfyg'<\/span><span class=\"sy0\">,<\/span> task_owner <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'CURSO01'<\/span><span class=\"sy0\">,<\/span> replace <span class=\"sy0\">=&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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\">.021395<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.000448<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu19\">97.9<\/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\">.021396<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu19\">.0005<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu19\">97.66<\/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; <span class=\"nu0\">4440<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">81<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu19\">98.17<\/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\">3725955559<\/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;<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; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">161<\/span> &nbsp;<span class=\"br0\">&#40;<\/span><span class=\"nu0\">12<\/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;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS FULL<span class=\"sy0\">|<\/span> VENDAS <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">161<\/span> &nbsp;<span class=\"br0\">&#40;<\/span><span class=\"nu0\">12<\/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> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/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\">2521981677<\/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; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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; &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\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">76<\/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;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> VENDAS &nbsp; &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\">18<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">76<\/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\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;INDEX SKIP SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> VENDAS_PROD_CUST_IDX <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\">74<\/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\">3<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/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<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">No relat\u00f3rio produzido pelo STA verificamos que ele sugere a aplica\u00e7\u00e3o de uma SQL_PROFILE que deve proporcionar um ganho de 98% no tempo de execu\u00e7\u00e3o da consulta, al\u00e9m disso o relat\u00f3rio apresenta estat\u00edsticas detalhadas da consulta antes e ap\u00f3s a utiliza\u00e7\u00e3o da SQL_PROFILE, tamb\u00e9m mostra o plano de execu\u00e7\u00e3o atual e o que ser\u00e1 utilizado ap\u00f3s a aplica\u00e7\u00e3o da SQL_PROFILE.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">4) Aplicar a solu\u00e7\u00e3o proposta pelo STA<\/span><\/h2>\n<p style=\"text-align: justify;\">Para verificar a efic\u00e1cia da solu\u00e7\u00e3o proposta vamos aceitar a SQL_PROFILE para que ela seja utilizada pelo Otimizador e na sequ\u00eancia verificar o plano de execu\u00e7\u00e3o criado.<\/p>\n<p>&nbsp;<\/p>\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 \/><\/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\">'Task_name-4wnsfqhdwmfyg'<\/span><span class=\"sy0\">,<\/span> task_owner <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'CURSO01'<\/span><span class=\"sy0\">,<\/span> replace <span class=\"sy0\">=&gt;<\/span> &nbsp;<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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set <span class=\"kw1\">echo<\/span> off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set tab off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set lines <span class=\"nu0\">300<\/span> pages <span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM vendas<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nAMOUNT_SOLD<br \/>\n<span class=\"sy0\">-----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">907<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">98<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%DBTW111%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%SQL Analyze%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n4wnsfqhdwmfyg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span><br \/>\n4wnsfqhdwmfyg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span><br \/>\n<br \/>\nDecorrido<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.07<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'basic iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------<\/span><br \/>\nEXPLAINED SQL STATEMENT<span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold &nbsp; FROM vendas &nbsp;WHERE<br \/>\ncust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/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\">2521981677<\/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; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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=\"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; &nbsp;<span class=\"nu0\">81<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/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; &nbsp;<span class=\"nu0\">81<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> VENDAS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">81<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;INDEX SKIP SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> VENDAS_PROD_CUST_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">80<\/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\">3<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/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_02602d8ca9640001 used <span class=\"kw1\">for<\/span> this statement<br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">26<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Observando a se\u00e7\u00e3o NOTE do plano de execu\u00e7\u00e3o, verificamos que a SQL profile SYS_SQLPROF_02602d8ca9640001 foi utilizada e no plano de execu\u00e7\u00e3o a tabela VENDAS foi acessada utilizando o \u00edndice VENDAS_PROD_CUST_IDX. Comparando os dois planos de execu\u00e7\u00e3o constatamos que houve uma melhora significativa em termos de utiliza\u00e7\u00e3o de recursos do Oracle, a quantidade Buffers acessados caiu de 4.440 para 81. A\u00a0d\u00favida que permanece \u00e9: Ser\u00e1 que existe um plano de execu\u00e7\u00e3o melhor que este da SQL_PROFILE? vamos responder a esta pergunta no pr\u00f3ximo t\u00f3pico.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">5) Aplicar uma solu\u00e7\u00e3o de Tuning alternativa<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A documenta\u00e7\u00e3o da Oracle sobre o STA diz que alem da sugest\u00e3o de SQL_PROFILES o STA pode sugerir a cria\u00e7\u00e3o de \u00edndices, a atualiza\u00e7\u00e3o de estat\u00edsticas e at\u00e9 que a consulta seja reescrita. Apesar do STA n\u00e3o ter sugerido em seu relat\u00f3rio vamos criar um \u00edndice simples na coluna utilizada como filtro na cl\u00e1usula WHERE e verificar o plano de execu\u00e7\u00e3o que o Otimizador vai criar.<\/span><\/p>\n<p>&nbsp;<\/p>\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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> create index VENDAS_CUST_IDX on vendas<span class=\"br0\">&#40;<\/span>cust_id<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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set <span class=\"kw1\">echo<\/span> off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set tab off<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> set lines <span class=\"nu0\">300<\/span> pages <span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW112 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM vendas<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nAMOUNT_SOLD<br \/>\n<span class=\"sy0\">-----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">907<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">98<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%DBTW112%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\nd8869gmm58v7h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'basic iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------<\/span><br \/>\nEXPLAINED SQL STATEMENT<span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW112 *\/<\/span> sum<span class=\"br0\">&#40;<\/span>amount_sold<span class=\"br0\">&#41;<\/span> amount_sold &nbsp; FROM vendas &nbsp;WHERE<br \/>\ncust_id <span class=\"sy0\">=<\/span> <span class=\"nu0\">100872<\/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\">2997106929<\/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; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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=\"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; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/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; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> VENDAS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">130<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &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> VENDAS_CUST_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">130<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp; <span class=\"nu0\">4<\/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\">3<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_ID&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"nu0\">100872<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">21<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Ap\u00f3s a cria\u00e7\u00e3o do \u00edndice o Otimizador passa a considerar essa op\u00e7\u00e3o para acessar a tabela VENDAS, quando comparamos o plano de execu\u00e7\u00e3o utilizado pela SQL_PROFILE e este ultimo com a utiliza\u00e7\u00e3o do \u00edndice, podemos constatar que houve uma melhora significativa no plano alternativo que reduziu a quantidade de acesso aos Buffers do banco de dados de 81 para 5.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">6)\u00a0\u00a0CONCLUS\u00c3O<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Utilizamos um exemplo simples para evidenciar que o SQL Tuning Advisor pode n\u00e3o ser aquela ferramenta que vai resolver todos os seus problemas de Tuning de instru\u00e7\u00f5es SQL, assim como neste exemplo, j\u00e1 constatamos dezenas de situa\u00e7\u00f5es onde o STA n\u00e3o consegue realizar o trabalho de Tuning que precisamos. Neste artigo n\u00e3o temos a pretens\u00e3o de dizer que o STA seja um ferramenta que podemos descartar em nossos trabalhos de Tuning, nossa inten\u00e7\u00e3o \u00e9 alertar que o STA tem suas limita\u00e7\u00f5es e que precisamos buscar conhecimentos de SQL Tuning para realizar o trabalho que ferramentas como o STA n\u00e3o conseguem resolver.<\/span><\/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=\"https:\/\/docs.oracle.com\/cd\/E25178_01\/server.1111\/e16638\/sql_tune.htm\" target=\"_blank\">https:\/\/docs.oracle.com\/cd\/E25178_01\/server.1111\/e16638\/sql_tune.htm<\/a><\/span><\/strong><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\"><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\"><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#001\" width=\"330\" height=\"242\" \/><\/a><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ferramentas de Tuning s\u00e3o fant\u00e1sticos recursos que nos ajudam muito em nosso trabalho, a m\u00e1 noticia \u00e9 que diferente do que muito gente pensa elas n\u00e3o fazem todo o trabalho. Existem algumas ferramentas que at\u00e9 se prop\u00f5e a fazer o trabalho de Tuning completo, como a ferramenta da Oracle SQL Tuning Advisor (STA), porem quem j\u00e1 utilizou esta ferramenta sabe<\/p>\n","protected":false},"author":2,"featured_media":1274,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[185],"tags":[114,117,186,116,15],"class_list":["post-1303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-tuning-advisor","tag-ferramentas-de-tuning","tag-sql-tuning-advisor","tag-sql_profile","tag-sta","tag-tuning-tools"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1303","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=1303"}],"version-history":[{"count":16,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1303\/revisions"}],"predecessor-version":[{"id":2079,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1303\/revisions\/2079"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/1274"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1303"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}