{"id":849,"date":"2016-10-02T22:29:56","date_gmt":"2016-10-03T01:29:56","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=849"},"modified":"2019-11-11T18:54:09","modified_gmt":"2019-11-11T21:54:09","slug":"sql-profile-como-sobreviver-sem-ela","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/","title":{"rendered":"SQL Profile: Como sobreviver sem ela?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Em nossas tarefas de &#8220;SQL Tuning&#8221; muitas vezes n\u00e3o temos como alterar o c\u00f3digo da instru\u00e7\u00e3o SQL e nesses casos precisamos utilizar alguns recursos do banco de dados que permitem influenciar o Otimizador na montagem do plano de execu\u00e7\u00e3o sem a necessidade de incluir um &#8220;HINT&#8221; no c\u00f3digo da instru\u00e7\u00e3o SQL. Um desses recursos \u00e9 a &#8220;SQL_Profile&#8221;, porem para utiliza-la necessitamos da &#8220;Option Tuning Pack&#8221;, essa restri\u00e7\u00e3o j\u00e1 foi abordada num <strong><a href=\"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-sera-que-posso-usar-esse-recurso\/\" target=\"_blank\">artigo<\/a><\/strong> publicado anteriormente. Nesse artigo vamos mostrar como podemos alterar um plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da instru\u00e7\u00e3o SQL, utilizando o recurso &#8220;SQL Plan Management&#8221; que n\u00e3o requer &#8220;Options&#8221; para sua utiliza\u00e7\u00e3o.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O recurso &#8220;SQL Plan Management&#8221; (SPM) foi concebido para garantir a estabilidade dos planos de execu\u00e7\u00e3o e impedir que o Otimizador utilize um plano de execu\u00e7\u00e3o com tempo de resposta maior que os planos que j\u00e1 vinham sendo utilizados, para impedir a regress\u00e3o de um plano de execu\u00e7\u00e3o o SPM s\u00f3 aceita um plano de execu\u00e7\u00e3o depois que ele for validado levando em considera\u00e7\u00e3o o tempo de execu\u00e7\u00e3o desse novo plano. Sem o SPM o Otimizador faz a escolha do plano de execu\u00e7\u00e3o pelo CUSTO do plano que em algumas situa\u00e7\u00f5es n\u00e3o representa a melhor op\u00e7\u00e3o.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O SPM possui v\u00e1rias &#8220;procedures&#8221; para o seu gerenciamento, para demonstrar o que foi proposto inicialmente vamos utilizar a &#8220;procedure DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE&#8221; que permite a cria\u00e7\u00e3o de um &#8220;SQL PLAN&#8221; manualmente.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Simulando a altera\u00e7\u00e3o de um plano de execu\u00e7\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para realizar a simula\u00e7\u00e3o vamos executar os seguintes passos:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Criar uma tabela com um \u00edndice e coletar as estat\u00edsticas.<\/span><br \/>\n<span style=\"font-size: 12pt;\">2) Executar uma consulta nessa tabela utilizando o \u00edndice.<\/span><br \/>\n<span style=\"font-size: 12pt;\">3) Executar a mesma consulta com um &#8220;HINT&#8221; para for\u00e7ar um &#8220;FULL TABLE SCAN&#8221; na tabela.<\/span><br \/>\n<span style=\"font-size: 12pt;\">4) Criar um &#8220;SQL PLAN&#8221; manualmente para a consulta original for\u00e7ando o &#8220;FULL TABLE SCAN&#8221;.<\/span><br \/>\n<span style=\"font-size: 12pt;\">5) Executar a consulta original (sem HINT) que utilizar\u00e1 &#8220;SQL PLAN&#8221; com &#8220;FULL TABLE SCAN&#8221;.<\/span><\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Criando a tabela<\/span><\/h3>\n<p>&nbsp;<\/p>\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 \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<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> CREATE TABLE MY_OBJECTS <span class=\"kw1\">AS<\/span> SELECT <span class=\"sy0\">*<\/span> FROM DBA_OBJECTS<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE INDEX IDX_MY_OBJECTS ON MY_OBJECTS<span class=\"br0\">&#40;<\/span>OBJECT_TYPE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nIndex created<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\">'MY_OBJECTS'<\/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=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">2) Consulta com plano escolhido pelo Otimizador<\/span><\/h3>\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 \/><\/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 \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable B1 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><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> <span class=\"sy0\">:<\/span>B1 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'LOB PARTITION'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nOBJECT_NAME<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSYS_LOB0000011479C00008$$<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\">'%DBTW001%'<\/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 \/>\n6k0ys0f922fbm &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> 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\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nold &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\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw2\">new<\/span> &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\">'6k0ys0f922fbm'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'allstats 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 \/>\nSQL_ID &nbsp;6k0ys0f922fbm<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<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\">1142617335<\/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; &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\">4<\/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> MY_OBJECTS &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">12<\/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\">4<\/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> IDX_MY_OBJECTS <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">12<\/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\">3<\/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;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> rows selected<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 o plano de execu\u00e7\u00e3o verificamos que o Otimizador escolheu acessar os registros da tabela utilizando o \u00edndice.<\/span><\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">3) Consulta for\u00e7ando &#8220;FULL TABLE SCAN&#8221;<\/span><\/h3>\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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/*+ full(MY_OBJECTS) DBTW002 *\/<\/span> &nbsp;OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nOBJECT_NAME<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSYS_LOB0000011479C00008$$<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\">'%DBTW002%'<\/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 \/>\ncgsc57rkrxkfh &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\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nold &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\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw2\">new<\/span> &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\">'cgsc57rkrxkfh'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'allstats 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 \/>\nSQL_ID &nbsp;cgsc57rkrxkfh<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/*+ full(MY_OBJECTS) DBTW002 *\/<\/span> &nbsp;OBJECT_NAME FROM MY_OBJECTS<br \/>\nWHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<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\">880823944<\/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; &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;<span class=\"sy0\">|<\/span> &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;<span class=\"nu0\">1899<\/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> MY_OBJECTS <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">12<\/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\">1899<\/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;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> rows selected<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;\">A utiliza\u00e7\u00e3o do &#8220;HINT FULL()&#8221; influencia o Otimizador na\u00a0montagem do plano de execu\u00e7\u00e3o que far\u00e1 a leitura de todos os registros da tabela.<\/span><\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">4) Criar SQL PLAN for\u00e7ando FTS<\/span><\/h3>\n<p><span style=\"font-size: 12pt;\">Para esta simula\u00e7\u00e3o podemos deixar os par\u00e2metros do banco referentes ao &#8220;SQL PLAN MANAGEMENT&#8221; com seus respectivos valores padr\u00f5es. Consultando a &#8220;library cache&#8221; encontramos as duas vers\u00f5es de consultas executadas.<\/span><br \/>\n&nbsp;<\/p>\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 \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> show parameters plan_baseline<br \/>\n<br \/>\nNAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TYPE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; VALUE<br \/>\n<span class=\"sy0\">------------------------------------<\/span> <span class=\"sy0\">--------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span><br \/>\noptimizer_capture_sql_plan_baselines boolean &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw4\">FALSE<\/span><br \/>\noptimizer_use_sql_plan_baselines &nbsp; &nbsp; boolean &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw4\">TRUE<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> col sql_text <span class=\"kw1\">for<\/span> a60<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<span class=\"sy0\">,<\/span> plan_hash_value<span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/substr\"><span class=\"kw3\">substr<\/span><\/a><span class=\"br0\">&#40;<\/span>sql_text<span class=\"sy0\">,<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">60<\/span><span class=\"br0\">&#41;<\/span> sql_text<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\">'%DBTW00%'<\/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 PLAN_HASH_VALUE SQL_TEXT<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span> <span class=\"sy0\">---------------<\/span> <span class=\"sy0\">------------------------------------------------------------<\/span><br \/>\ncgsc57rkrxkfh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">880823944<\/span> SELECT <span class=\"coMULTI\">\/*+ full(MY_OBJECTS) DBTW002 *\/<\/span> &nbsp;OBJECT_NAME FROM MY_<br \/>\n6k0ys0f922fbm &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1142617335<\/span> SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJEC<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;\">Vamos executar o script &#8220;cspb.sql&#8221; para criar um &#8220;SQL PLAN&#8221; que for\u00e7ar\u00e1 a execu\u00e7\u00e3o do plano com FTS sempre que a consulta original for utilizada. (O c\u00f3digo fonte desse script esta dispon\u00edvel no final desse artigo) <\/span><\/p>\n<p>&nbsp;<\/p>\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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">@<\/span>cspb<span class=\"sy0\">.<\/span>sql<span class=\"sy0\">;<\/span><br \/>\nSQL_ID &nbsp; &nbsp; Consulta original <span class=\"sy0\">:<\/span> 6k0ys0f922fbm<br \/>\nCHILD<span class=\"co2\"># &nbsp; &nbsp; Consulta original : 0<br \/>\n<\/span>SQL_ID &nbsp; &nbsp; Consulta alterada <span class=\"sy0\">:<\/span> cgsc57rkrxkfh<br \/>\nPLAN_HASH<span class=\"co2\"># Consulta alterada : 880823944<br \/>\n<\/span>SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<br \/>\n<span class=\"nu0\">1<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<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;\">Vamos executar a consulta original mais uma vez e verificar quantos &#8220;SQL PLAN&#8221; foram criados.<\/span><\/p>\n<p>&nbsp;<\/p>\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 \/>14<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nOBJECT_NAME<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSYS_LOB0000011479C00008$$<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT SQL_HANDLE<span class=\"sy0\">,<\/span> PLAN_NAME<span class=\"sy0\">,<\/span> ENABLED<span class=\"sy0\">,<\/span> ACCEPTED<span class=\"sy0\">,<\/span> FIXED &nbsp;FROM &nbsp; DBA_SQL_PLAN_BASELINES<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PLAN_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ENA ACC FIX<br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">---<\/span> <span class=\"sy0\">---<\/span> <span class=\"sy0\">---<\/span><br \/>\nSQL_4c1ebfe8f93aa46c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SQL_PLAN_4s7pzx3wmp93c77af7aad YES NO &nbsp;NO<br \/>\nSQL_4c1ebfe8f93aa46c &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SQL_PLAN_4s7pzx3wmp93c89405218 YES YES NO<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;\">Quando consultamos a vis\u00e3o &#8220;DBA_SQL_PLAN_BASELINES&#8221; encontramos dois &#8220;SQL PLAN&#8221; para a consulta original, um criado manualmente pelo script &#8220;cspb.sql&#8221; que est\u00e1 como ACCEPTED=YES e o outro criado automaticamente quando executamos a consulta original pela ultima vez e sua condi\u00e7\u00e3o \u00e9 ACCEPTED=NO, ou seja ele n\u00e3o ser\u00e1 utilizado pelo Otimizador at\u00e9 que seja validado e o seu tempo de execu\u00e7\u00e3o seja melhor que o do plano que criamos manualmente.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Tamb\u00e9m podemos obter informa\u00e7\u00f5es mais detalhadas da consulta original utilizando o\u00a0pacote\u00a0&#8220;DBMS_XPLAN&#8221;.<\/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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM TABLE<span class=\"br0\">&#40;<\/span>DBMS_XPLAN<span class=\"sy0\">.<\/span>DISPLAY_SQL_PLAN_BASELINE<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sql_handle<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'&amp;sql_handle'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;format<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'basic'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nEnter value <span class=\"kw1\">for<\/span> sql_handle<span class=\"sy0\">:<\/span> SQL_4c1ebfe8f93aa46c<br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nSQL handle<span class=\"sy0\">:<\/span> SQL_4c1ebfe8f93aa46c<br \/>\nSQL text<span class=\"sy0\">:<\/span> SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nPlan name<span class=\"sy0\">:<\/span> SQL_PLAN_4s7pzx3wmp93c77af7aad &nbsp; &nbsp; &nbsp; &nbsp; Plan id<span class=\"sy0\">:<\/span> <span class=\"nu0\">2007988909<\/span><br \/>\nEnabled<span class=\"sy0\">:<\/span> YES &nbsp; &nbsp; Fixed<span class=\"sy0\">:<\/span> NO &nbsp; &nbsp; &nbsp;Accepted<span class=\"sy0\">:<\/span> NO &nbsp; &nbsp; &nbsp;Origin<span class=\"sy0\">:<\/span> AUTO<span class=\"sy0\">-<\/span>CAPTURE<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/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\">1142617335<\/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; &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;<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> MY_OBJECTS &nbsp; &nbsp; <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> IDX_MY_OBJECTS <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">------------------------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nPlan name<span class=\"sy0\">:<\/span> SQL_PLAN_4s7pzx3wmp93c89405218 &nbsp; &nbsp; &nbsp; &nbsp; Plan id<span class=\"sy0\">:<\/span> <span class=\"nu0\">2302693912<\/span><br \/>\nEnabled<span class=\"sy0\">:<\/span> YES &nbsp; &nbsp; Fixed<span class=\"sy0\">:<\/span> NO &nbsp; &nbsp; &nbsp;Accepted<span class=\"sy0\">:<\/span> YES &nbsp; &nbsp; Origin<span class=\"sy0\">:<\/span> MANUAL<span class=\"sy0\">-<\/span>LOAD<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/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\">880823944<\/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; &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; &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 FULL<span class=\"sy0\">|<\/span> MY_OBJECTS <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------<\/span><br \/>\n<br \/>\n<span class=\"nu0\">34<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">5) Consulta original com SQL PLAN<\/span><\/h3>\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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> variable B1 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><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> <span class=\"sy0\">:<\/span>B1 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'LOB PARTITION'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nOBJECT_NAME<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSYS_LOB0000011479C00008$$<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\">'%DBTW001%'<\/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 \/>\n6k0ys0f922fbm &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> 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\">'allstats 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 \/>\nSQL_ID &nbsp;6k0ys0f922fbm<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<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\">880823944<\/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; &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;<span class=\"sy0\">|<\/span> &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;<span class=\"nu0\">1899<\/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> MY_OBJECTS <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">12<\/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\">1899<\/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;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nNote<br \/>\n<span class=\"sy0\">-----<\/span><br \/>\n&nbsp; &nbsp;<span class=\"sy0\">-<\/span> SQL plan baseline SQL_PLAN_4s7pzx3wmp93c89405218 used <span class=\"kw1\">for<\/span> this statement<br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">22<\/span> rows selected<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;\">Quando executamos a consulta original ap\u00f3s a cria\u00e7\u00e3o do &#8220;SQL PLAN&#8221; verificamos que o plano de execu\u00e7\u00e3o utilizado realiza um &#8220;Full Table Scan&#8221; na tabela e na se\u00e7\u00e3o &#8220;Note&#8221; aparece o coment\u00e1rio: &#8220;SQL plan baseline SQL_PLAN_4s7pzx3wmp93c89405218 used for this statement&#8221;.<\/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;\">Nos Bancos de dados Oracle, a partir da vers\u00e3o 11G, onde n\u00e3o dispomos da licen\u00e7a &#8220;Tuning Pack&#8221; e consequentemente n\u00e3o podemos utilizar o recurso &#8220;SQL_PROFILE&#8221; podemos utilizar como alternativa o recurso &#8220;SQL PLAN MANAGEMENT&#8221; para fazer ajustes nos planos de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o.<\/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 o c\u00f3digo fonte do script utilizado nesse artigo:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong><a href=\"http:\/\/dbtimewizard.com.br\/blog\/scripts\/cspb.sql\" target=\"_blank\">cspb<\/a><\/strong><\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\"><strong><a href=\"https:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e41573\/optplanmgmt.htm#PFGRF007\" target=\"_blank\">https:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e41573\/optplanmgmt.htm#PFGRF007<\/a><\/strong><\/span><\/p>\n<p>&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-02\" 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;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em nossas tarefas de &#8220;SQL Tuning&#8221; muitas vezes n\u00e3o temos como alterar o c\u00f3digo da instru\u00e7\u00e3o SQL e nesses casos precisamos utilizar alguns recursos do banco de dados que permitem influenciar o Otimizador na montagem do plano de execu\u00e7\u00e3o sem a necessidade de incluir um &#8220;HINT&#8221; no c\u00f3digo da instru\u00e7\u00e3o SQL. Um desses recursos \u00e9 a &#8220;SQL_Profile&#8221;, porem para utiliza-la<\/p>\n","protected":false},"author":2,"featured_media":850,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[156],"tags":[159,158,157,118],"class_list":["post-849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-plan-management","tag-dbms_spm","tag-load_plans_from_cursor_cache","tag-sql-plan-management","tag-sql-profile"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"V. J.A.\"\/>\n\t<link rel=\"canonical\" href=\"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"DBTimeWizard | Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"SQL Profile: Como sobreviver sem ela? | DBTimeWizard\" \/>\n\t\t<meta property=\"og:description\" content=\"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;.\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-10-03T01:29:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-11-11T21:54:09+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"SQL Profile: Como sobreviver sem ela? | DBTimeWizard\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#article\",\"name\":\"SQL Profile: Como sobreviver sem ela? | DBTimeWizard\",\"headline\":\"SQL Profile: Como sobreviver sem ela?\",\"author\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"publisher\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/SQL_PLAN_MNGMT.jpg\",\"width\":1920,\"height\":1246,\"caption\":\"SQL Plan Mngmt\"},\"datePublished\":\"2016-10-02T22:29:56-03:00\",\"dateModified\":\"2019-11-11T18:54:09-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#webpage\"},\"articleSection\":\"SQL Plan Management, DBMS_SPM, load_plans_from_cursor_cache, SQL PLAN MANAGEMENT, SQL Profile\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"In\\u00edcio\",\"item\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/sql-plan-management\\\/#listItem\",\"name\":\"SQL Plan Management\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/sql-plan-management\\\/#listItem\",\"position\":2,\"name\":\"SQL Plan Management\",\"item\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/sql-plan-management\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#listItem\",\"name\":\"SQL Profile: Como sobreviver sem ela?\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#listItem\",\"position\":3,\"name\":\"SQL Profile: Como sobreviver sem ela?\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/sql-plan-management\\\/#listItem\",\"name\":\"SQL Plan Management\"}}]},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\",\"name\":\"DBTimeWizard\",\"description\":\"Manter seus Bancos de Dados e Aplica\\u00e7\\u00f5es com alto desempenho \\u00e9 o nosso neg\\u00f3cio.\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/\",\"name\":\"V. J.A.\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0ebfb24510db8dc34abd17c6b4afddd99d8e48dc9184002bc49b2fc6d324d68f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"V. J.A.\"}},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#webpage\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/\",\"name\":\"SQL Profile: Como sobreviver sem ela? | DBTimeWizard\",\"description\":\"Como alterar plano de execu\\u00e7\\u00e3o sem alterar o c\\u00f3digo da aplica\\u00e7\\u00e3o utilizando o recurso \\\"SQL PLAN MANAGEMENT\\\".\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#breadcrumblist\"},\"author\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"creator\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/09\\\/SQL_PLAN_MNGMT.jpg\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#mainImage\",\"width\":1920,\"height\":1246,\"caption\":\"SQL Plan Mngmt\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/sql-profile-como-sobreviver-sem-ela\\\/#mainImage\"},\"datePublished\":\"2016-10-02T22:29:56-03:00\",\"dateModified\":\"2019-11-11T18:54:09-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/\",\"name\":\"DBTimeWizard\",\"description\":\"Manter seus Bancos de Dados e Aplica\\u00e7\\u00f5es com alto desempenho \\u00e9 o nosso neg\\u00f3cio.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"SQL Profile: Como sobreviver sem ela? | DBTimeWizard","description":"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso \"SQL PLAN MANAGEMENT\".","canonical_url":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#article","name":"SQL Profile: Como sobreviver sem ela? | DBTimeWizard","headline":"SQL Profile: Como sobreviver sem ela?","author":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"publisher":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/09\/SQL_PLAN_MNGMT.jpg","width":1920,"height":1246,"caption":"SQL Plan Mngmt"},"datePublished":"2016-10-02T22:29:56-03:00","dateModified":"2019-11-11T18:54:09-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#webpage"},"isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#webpage"},"articleSection":"SQL Plan Management, DBMS_SPM, load_plans_from_cursor_cache, SQL PLAN MANAGEMENT, SQL Profile"},{"@type":"BreadcrumbList","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","position":1,"name":"In\u00edcio","item":"http:\/\/dbtimewizard.com.br\/blog","nextItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/#listItem","name":"SQL Plan Management"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/#listItem","position":2,"name":"SQL Plan Management","item":"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/","nextItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#listItem","name":"SQL Profile: Como sobreviver sem ela?"},"previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","name":"In\u00edcio"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#listItem","position":3,"name":"SQL Profile: Como sobreviver sem ela?","previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/#listItem","name":"SQL Plan Management"}}]},{"@type":"Organization","@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization","name":"DBTimeWizard","description":"Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","url":"http:\/\/dbtimewizard.com.br\/blog\/"},{"@type":"Person","@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author","url":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/","name":"V. J.A.","image":{"@type":"ImageObject","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0ebfb24510db8dc34abd17c6b4afddd99d8e48dc9184002bc49b2fc6d324d68f?s=96&d=mm&r=g","width":96,"height":96,"caption":"V. J.A."}},{"@type":"WebPage","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#webpage","url":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/","name":"SQL Profile: Como sobreviver sem ela? | DBTimeWizard","description":"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso \"SQL PLAN MANAGEMENT\".","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#breadcrumblist"},"author":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"creator":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"image":{"@type":"ImageObject","url":"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/09\/SQL_PLAN_MNGMT.jpg","@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#mainImage","width":1920,"height":1246,"caption":"SQL Plan Mngmt"},"primaryImageOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/#mainImage"},"datePublished":"2016-10-02T22:29:56-03:00","dateModified":"2019-11-11T18:54:09-03:00"},{"@type":"WebSite","@id":"http:\/\/dbtimewizard.com.br\/blog\/#website","url":"http:\/\/dbtimewizard.com.br\/blog\/","name":"DBTimeWizard","description":"Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","inLanguage":"pt-BR","publisher":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"DBTimeWizard | Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","og:type":"article","og:title":"SQL Profile: Como sobreviver sem ela? | DBTimeWizard","og:description":"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;.","og:url":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/","article:published_time":"2016-10-03T01:29:56+00:00","article:modified_time":"2019-11-11T21:54:09+00:00","twitter:card":"summary","twitter:title":"SQL Profile: Como sobreviver sem ela? | DBTimeWizard","twitter:description":"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;."},"aioseo_meta_data":{"post_id":"849","title":"SQL Profile: Como sobreviver sem ela? | #site_title","description":"Como alterar plano de execu\u00e7\u00e3o sem alterar o c\u00f3digo da aplica\u00e7\u00e3o utilizando o recurso &quot;SQL PLAN MANAGEMENT&quot;.","keywords":[{"label":"SQL PLAN MANAGEMENT","value":"SQL PLAN MANAGEMENT"},{"label":"SQL PROFILE","value":"SQL PROFILE"},{"label":"load_plans_from_cursor_cache","value":"load_plans_from_cursor_cache"},{"label":"DBMS_SPM","value":"DBMS_SPM"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-12-05 15:21:03","updated":"2026-03-19 14:32:24","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/dbtimewizard.com.br\/blog\" title=\"In\u00edcio\">In\u00edcio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/\" title=\"SQL Plan Management\">SQL Plan Management<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSQL Profile: Como sobreviver sem ela?\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"In\u00edcio","link":"http:\/\/dbtimewizard.com.br\/blog"},{"label":"SQL Plan Management","link":"http:\/\/dbtimewizard.com.br\/blog\/category\/sql-plan-management\/"},{"label":"SQL Profile: Como sobreviver sem ela?","link":"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/"}],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/849","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=849"}],"version-history":[{"count":19,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/849\/revisions"}],"predecessor-version":[{"id":2090,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/849\/revisions\/2090"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/850"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=849"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}