{"id":5120,"date":"2016-12-15T10:50:06","date_gmt":"2016-12-15T09:50:06","guid":{"rendered":"http:\/\/arumel.com\/?p=5120\/"},"modified":"2017-06-29T18:22:09","modified_gmt":"2017-06-29T16:22:09","slug":"o-misterio-da-consulta-diabolica","status":"publish","type":"post","link":"https:\/\/arumel.com\/en\/o-misterio-da-consulta-diabolica\/","title":{"rendered":"O misterio da consulta diab\u00f3lica"},"content":{"rendered":"<h2><span style=\"color: #000000;\"><strong>Punto de partida<\/strong><\/span><\/h2>\n<p>Un cliente atopa un problema de rendemento intermitente executando unha mesma consulta. Esta pasa de executarse en 5&#8243; a tardar minutos, facendo imposible o traballo normal en produci\u00f3n. Estamos nunha BD 12.1.0.1. Que ocorre?<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #000000;\"><strong>STATISTICS_LEVEL e E-row vs A-row<\/strong><\/span><\/h3>\n<p>Por defecto o valor do par\u00e1metro STATISTICS_LEVEL \u00e9 TYPICAL, a\u00ednda que Cloud Control nas s\u00faas recomendaci\u00f3ns nos di que \u00e9 recomendable empregar ALL. Cambiar este par\u00e1metro a ALL implica unha sobrecarga da que non te\u00f1o criterio para identificar no momento da revisi\u00f3n. Tam\u00e9n existen riscos de crecemento dalgunhas t\u00e1boas relacionadas con AWR, pero pola contra ofrece algunhas vantaxes a hora de traballar especialmente en ciencia forense.<\/p>\n<pre class=\"theme:terminal lang:default decode:true\">STATISTICS_NAME                          DESCRIPTION                                                  ACTIVAT\r\n---------------------------------------- ------------------------------------------------------------ -------\r\nGlobal Cache CPU Statistics              RAC Buffer Cache CPU statistics                              ALL\r\nPlan Execution Statistics                Enables collection of plan execution statistics              ALL\r\nTimed OS Statistics                      Enables gathering of timed operating system statistics       ALL<\/pre>\n<p><strong>Plan Statistics Name<\/strong> fai a boca auga. Por que? Pois porque permite por exemplo lanzar un DISPLAY_CURSOR coa opci\u00f3n <strong>FORMAT=&gt;&#8217;ALLSTATS LAST&#8217;<\/strong> ou un &#8216;ALLSTATS ALL&#8217; e comparar as estimaci\u00f3ns do optimizador cos datos reais obtidos, algo que coa configuraci\u00f3n por defecto non temos, vendo s\u00f3 as estimaci\u00f3ns (E):<\/p>\n<pre class=\"theme:terminal lang:default decode:true\">-------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n| Id | Operation                     | Name        | E-Rows |E-Bytes  |E-Temp   |Cost (%CPU)| E-Time    |    OMem |    1Mem |O\/1\/M   | Max-Tmp |\r\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n| 0 | SELECT STATEMENT               |            |         |         |         | 20562 (100)|          |         |         |        |         |\r\n| 1 | HASH JOIN OUTER                |            |     825 |     128K|         | 20562   (1)| 00:00:01 |     998K|     998K|   1\/0\/0|         |\r\n(...)\r\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/pre>\n<p>De t\u00f3dolos xeitos, os datos A-row podemos obtelos para unha consulta de xeito manual empregando o hint \/*+ GATHER_PLAN_STATISTICS *\/<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #000000;\"><strong>Bug 16571451. 12.1.0.1 non emprega Plan Directives se non subimos o nivel por defecto de optimizer_dynamic_sampling!<\/strong><\/span><\/h3>\n<p>Interesante bug xa que se trata da versi\u00f3n de BD coa que estamos a traballar. Tam\u00e9n estamos empregando a configuraci\u00f3n por defecto para Dynamic Sampling (optimizer_dynamic_sampling=2), co que Oracle non emprega as SPDs (SQL Plan Directives) que existen na BD!!. O parche correspondente est\u00e1 inclu\u00eddo na versi\u00f3n 12.1.0.2.<br \/>\n<u>Un workaround que se pode aplicar \u00e9 <\/u><u><b>alter system set optimizer_dynamic_sampling=3<\/b><\/u>, co que o optimizador si empregar\u00e1 SPDs para crear o plan de execuci\u00f3n<br \/>\n<b><\/b><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #000000;\"><strong>Xeraci\u00f3n automatica de SPDs. Por que?<\/strong><\/span><\/h3>\n<p>Vendo a actividade, estanse xerando SPDs para moitas das t\u00e1boas que se empregan nesta consulta. Podemos ver que as combinaci\u00f3ns nas t\u00e1boas da nosa consulta son:<\/p>\n<pre class=\"theme:terminal lang:default decode:true\">SELECT distinct d.type, d.state, d.reason\r\n FROM   dba_sql_plan_directives d, dba_sql_plan_dir_objects o\r\n WHERE  d.directive_id=o.directive_id\r\n AND    o.owner = 'OWNER'\r\n AND    o.object_name in ('T1','T2','T3','T4','T5')\r\n \/\r\n \r\n TYPE         STATE           REASON\r\n ---------------- ------------- ------------------------------------\r\n DYNAMIC_SAMPLING NEW           JOIN CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING NEW           SINGLE TABLE CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING MISSING_STATS SINGLE TABLE CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING PERMANENT     GROUP BY CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING NEW           GROUP BY CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING PERMANENT     JOIN CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING PERMANENT     SINGLE TABLE CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING HAS_STATS     GROUP BY CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING HAS_STATS     SINGLE TABLE CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING MISSING_STATS GROUP BY CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING HAS_STATS     JOIN CARDINALITY MISESTIMATE\r\n DYNAMIC_SAMPLING MISSING_STATS JOIN CARDINALITY MISESTIMATE<\/pre>\n<p>Todas as raz\u00f3ns son erros na estimaci\u00f3n de estat\u00edsticas (\u00f3 mellor non existen mais raz\u00f3ns para elo \ud83d\ude42 ). Se n\u00f3s non estamos a crear estos SPDs, quen o fai? Pois a funcionalidade <strong>Automatic Reoptimization<\/strong> das <strong>Adaptive Statistics<\/strong>. Esta funcionalidade salta cando se executa por primeira vez unha consulta, e mostrea datos para ver se a cardinalidade se corresponde coa prevista cando:<\/p>\n<ul>\n<li>Hai t\u00e1boas sen estat\u00edsticas.<\/li>\n<li>Unha t\u00e1boa cont\u00e9n m\u00faltiples predicados conxuntivos ou disxuntivos.<\/li>\n<li>Existen predicados con operadores complexos que impiden \u00f3 optimizador estimar correctamente.<\/li>\n<\/ul>\n<p>Cando se cumpre algunha destas premisas, entra en xogo a funcionalidade <strong>Statistics Feedback<\/strong> (SF) para verificar se todo vai OK, e, que fai SF?<\/p>\n<pre class=\"theme:terminal lang:default decode:true \">select plan_table_output from table(dbms_xplan.display_cursor('81uujczagk9bf',null,'ALLSTATS ALL'));\r\n\r\n(...)\r\n\r\nNote\r\n-----\r\n   - statistics feedback used for this statement\r\n   - Warning: basic plan statistics not available. These are only collected when:\r\n       * hint 'gather_plan_statistics' is used for the statement or\r\n       * parameter 'statistics_level' is set to 'ALL', at session or system level<\/pre>\n<p>Cuando se cumple alguna de estas premisas, salta la funcionalidad de Statistics Feedback para verificar si todo va OK, y \u00bfqu\u00e9 hace SF? Pois&#8230; sorpresa, crear unha directiva!<\/p>\n<blockquote>\n<h6>At the end of execution, the optimizer compares its initial cardinality estimates to the actual number of rows returned by each operation in the plan during execution. If estimates differ significantly from actual cardinalities, then the optimizer stores the correct estimates for subsequent use. <span style=\"text-decoration: underline;\">The optimizer also creates a SQL plan directive so that other SQL statements can benefit from the information obtained during this initial execution<\/span>.<tt><\/tt><\/h6>\n<\/blockquote>\n<p>Con esta informaci\u00f3n, \u00e9 probable que polo motivo 2 da anterior lista, se est\u00e9n a xerar as SPDs. Hai que ter en conta outro factor que coido \u00e9 moi importante, as SPDs est\u00e1n asociadas a un conxunto de t\u00e1boas e son creadas e empregadas por diferentes consultas, polo que unha SPD que sexa empregada por unha consulta non necesariamente se ter\u00e1 xerado nunha anterior execuci\u00f3n da mesma consulta. Pode ter sido outra totalmente diferente, o que axudar\u00e1 a cimentar a tor\u00eda de que \u00e9 SF o que as est\u00e1 a xerar.<\/p>\n<p>Ben, tam\u00e9n axuda ver no plan de execuci\u00f3n do cursor que foi empregado Statistics Feedback, non o podo negar \ud83d\ude1b<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #000000;\"><strong>Esta empregando a consulta un SPD?<\/strong><\/span><\/h3>\n<p>Tendo en conta o bug en 12.1.0.1, \u00e9 unha pregunta importante neste momento. Tento saber se se emprega a trav\u00e9s das notas que amosa <strong>dbms_xplan.display_cursor<\/strong> que, para a consulta diab\u00f3lica que estamos a tratar son:<\/p>\n<pre class=\"theme:terminal lang:default decode:true \">Note\r\n-----\r\n   - Warning: basic plan statistics not available. These are only collected when:\r\n       * hint 'gather_plan_statistics' is used for the statement or\r\n       * parameter 'statistics_level' is set to 'ALL', at session or system level\r\n\r\nNote\r\n-----\r\n   - statistics feedback used for this statement\r\n   - Warning: basic plan statistics not available. These are only collected when:\r\n       * hint 'gather_plan_statistics' is used for the statement or\r\n       * parameter 'statistics_level' is set to 'ALL', at session or system level<\/pre>\n<p>Interesante porque nesta proba s\u00f3 temos 2 child cursor, a diferencia dunha incidencia anterior onde chegaba a haber 6. A diferencia entre os plans encaixa co comportamento esperado para SF, xa que a primeira execuci\u00f3n \u00e9 completada e a segunda emprega o feedback deixado pola primeira como podemos ver na <a href=\"https:\/\/docs.oracle.com\/database\/121\/TGSQL\/tgsql_optcncpt.htm#TGSQL227\">doc de Oracle<\/a>.<\/p>\n<p>Sabemos que empregamos SF, pero non temos nada mais salvo que revisemos con mais detalle os plans de execuci\u00f3n. Cando se emprega unha SPD, o plan de execuci\u00f3n amosado indicarao, tendo que aparecer algo similar a:<\/p>\n<pre class=\"theme:terminal lang:default decode:true\">Note\r\n-----\r\n- dynamic statistics used: dynamic sampling (level=2)\r\n- 1 Sql Plan Directive used for this statement<\/pre>\n<p>Pese a que existen moitas SPDs, non atopamos plans de execuci\u00f3n que as empreguen, cando menos relacionadas coa consulta analizada. Isto l\u00e9vame a pensar, e se realmente temos malos plans de execuci\u00f3n porque non estamos empregando SPDs pese a telas creadas para cimentar o resultado das SFs? Vemos que a consulta corrixe o primeiro plan de execuci\u00f3n \u00f3 obter datos reais e comparalo coas previsi\u00f3ns. Crea unha SPD, pero o bug 12.1.0.1 fai que futuras execuci\u00f3ns non as te\u00f1an en conta, pero precisamente o c\u00e1lculo de estat\u00edsticas invalida o anterior plan. Como podemos comprobalo? Vendo o motivo polo que o anterior plan foi invalidado, que no noso caso sempre acaba sendo o mesmo:<\/p>\n<pre class=\"theme:terminal lang:default decode:true\">21:37:55 SYS@bd&gt; select sql_id, child_number, reason from v$sql_shared_cursor where sql_id='81uujczagk9bf';\r\n\r\nSQL_ID          CHILD_NUMBER REASON\r\n------------- ------------ --------------------------------------------------------------------------------\r\n81uujczagk9bf         0 &amp;lt;ChildNode&amp;gt;&amp;lt;ChildNumber&amp;gt;0&amp;lt;\/ChildNumber&amp;gt;&amp;lt;ID&amp;gt;49&amp;lt;\/ID&amp;gt;&amp;lt;reason&amp;gt;Auto Reoptimization Mismatch(1)&amp;lt;\/reason&amp;gt;&amp;lt;size&amp;gt;3x4&amp;lt;\/size&amp;gt;&amp;lt;kxscflg&amp;gt;32&amp;lt;\/kxscflg&amp;gt;&amp;lt;kxscfl4&amp;gt;4194560&amp;lt;\/kxscfl4&amp;gt;&amp;lt;dnum_kksfcxe&amp;gt;262144&amp;lt;\/dnum_kksfcxe&amp;gt;&amp;lt;\/ChildNode&amp;gt;<\/pre>\n<h3><\/h3>\n<h3><span style=\"color: #000000;\"><strong>Conclusi\u00f3n<\/strong><\/span><\/h3>\n<p>Como conclusi\u00f3n, a hip\u00f3tese barallada tras analizar a incidencia \u00e9 que en alg\u00fan momento, a funcionalidade SF invalida un plan de execuci\u00f3n e crea novas SPDs para correxilo, pero estas SPDs non ser\u00e1n empregadas por outras consultas en caso de que se invalide o cursor e se faga un novo hard parse. Simple, pero encaixa. Finalmente, todo isto para que? Pois para concluir que <strong><span style=\"text-decoration: underline;\">probablemente conv\u00e9n nunha versi\u00f3n 12.1.0.1 subir o par\u00e1metro optimizer_dynamic_sampling a 3<\/span><\/strong>. O mostreo \u00e9 similar \u00f3 do nivel 2, pero eng\u00e1dense sentencias con expresi\u00f3ns na cl\u00e1usula WHERE que a priori parece tolerable en carga, a\u00ednda que este \u00e9 un prexuizo non contrastado a\u00ednda. Hai que ter en conta que este cambio, nunha BD estable, pode facer cambiar plans de execuci\u00f3n que non est\u00e1n a usar SPDs pero son bos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Punto de partida Un cliente atopa un problema de rendemento intermitente executando unha mesma consulta. Esta pasa de executarse en 5&#8243; a tardar minutos, facendo imposible o traballo normal en produci\u00f3n. Estamos nunha BD 12.1.0.1. Que ocorre? &nbsp; STATISTICS_LEVEL e E-row vs A-row Por defecto o valor do par\u00e1metro STATISTICS_LEVEL \u00e9 TYPICAL, a\u00ednda que Cloud [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5127,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[58,25,44],"tags":[17,16,19,14,15,18],"class_list":["post-5120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-2","category-portada","category-slider-post","tag-12-1-0-1","tag-12c","tag-child-cursor","tag-oracle","tag-plan-directive","tag-statistics-feedback"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>O misterio da consulta diab\u00f3lica - Arumel<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O misterio da consulta diab\u00f3lica - Arumel\" \/>\n<meta property=\"og:description\" content=\"Punto de partida Un cliente atopa un problema de rendemento intermitente executando unha mesma consulta. Esta pasa de executarse en 5&#8243; a tardar minutos, facendo imposible o traballo normal en produci\u00f3n. Estamos nunha BD 12.1.0.1. Que ocorre? &nbsp; STATISTICS_LEVEL e E-row vs A-row Por defecto o valor do par\u00e1metro STATISTICS_LEVEL \u00e9 TYPICAL, a\u00ednda que Cloud [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/\" \/>\n<meta property=\"og:site_name\" content=\"Arumel\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-15T09:50:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-06-29T16:22:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528\" \/>\n\t<meta property=\"og:image:width\" content=\"793\" \/>\n\t<meta property=\"og:image:height\" content=\"528\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alberto Pereiro\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alberto Pereiro\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/\"},\"author\":{\"name\":\"Alberto Pereiro\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/1cdc5947f4270801792b02ec92332edc\"},\"headline\":\"O misterio da consulta diab\u00f3lica\",\"datePublished\":\"2016-12-15T09:50:06+00:00\",\"dateModified\":\"2017-06-29T16:22:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/\"},\"wordCount\":1058,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/arumel.com\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/vento_mareiro.jpg?fit=793%2C528&ssl=1\",\"keywords\":[\"12.1.0.1\",\"12c\",\"child cursor\",\"oracle\",\"plan directive\",\"statistics feedback\"],\"articleSection\":[\"Oracle\",\"portada\",\"slider-post\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/\",\"url\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/\",\"name\":\"O misterio da consulta diab\u00f3lica - Arumel\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/arumel.com\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/vento_mareiro.jpg?fit=793%2C528&ssl=1\",\"datePublished\":\"2016-12-15T09:50:06+00:00\",\"dateModified\":\"2017-06-29T16:22:09+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/1cdc5947f4270801792b02ec92332edc\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/arumel.com\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/vento_mareiro.jpg?fit=793%2C528&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/arumel.com\\\/wp-content\\\/uploads\\\/2016\\\/12\\\/vento_mareiro.jpg?fit=793%2C528&ssl=1\",\"width\":793,\"height\":528},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/arumel.com\\\/o-misterio-da-consulta-diabolica\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\\\/\\\/arumel.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"O misterio da consulta diab\u00f3lica\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#website\",\"url\":\"http:\\\/\\\/arumel.com\\\/\",\"name\":\"Arumel\",\"description\":\"Outro sitio WordPress m\u00e1is\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/arumel.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/arumel.com\\\/#\\\/schema\\\/person\\\/1cdc5947f4270801792b02ec92332edc\",\"name\":\"Alberto Pereiro\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g\",\"caption\":\"Alberto Pereiro\"},\"url\":\"https:\\\/\\\/arumel.com\\\/en\\\/author\\\/alberto\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"O misterio da consulta diab\u00f3lica - Arumel","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/","og_locale":"en_US","og_type":"article","og_title":"O misterio da consulta diab\u00f3lica - Arumel","og_description":"Punto de partida Un cliente atopa un problema de rendemento intermitente executando unha mesma consulta. Esta pasa de executarse en 5&#8243; a tardar minutos, facendo imposible o traballo normal en produci\u00f3n. Estamos nunha BD 12.1.0.1. Que ocorre? &nbsp; STATISTICS_LEVEL e E-row vs A-row Por defecto o valor do par\u00e1metro STATISTICS_LEVEL \u00e9 TYPICAL, a\u00ednda que Cloud [&hellip;]","og_url":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/","og_site_name":"Arumel","article_published_time":"2016-12-15T09:50:06+00:00","article_modified_time":"2017-06-29T16:22:09+00:00","og_image":[{"width":793,"height":528,"url":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528","type":"image\/jpeg"}],"author":"Alberto Pereiro","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alberto Pereiro","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#article","isPartOf":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/"},"author":{"name":"Alberto Pereiro","@id":"http:\/\/arumel.com\/#\/schema\/person\/1cdc5947f4270801792b02ec92332edc"},"headline":"O misterio da consulta diab\u00f3lica","datePublished":"2016-12-15T09:50:06+00:00","dateModified":"2017-06-29T16:22:09+00:00","mainEntityOfPage":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/"},"wordCount":1058,"commentCount":0,"image":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1","keywords":["12.1.0.1","12c","child cursor","oracle","plan directive","statistics feedback"],"articleSection":["Oracle","portada","slider-post"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/","url":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/","name":"O misterio da consulta diab\u00f3lica - Arumel","isPartOf":{"@id":"http:\/\/arumel.com\/#website"},"primaryImageOfPage":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#primaryimage"},"image":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1","datePublished":"2016-12-15T09:50:06+00:00","dateModified":"2017-06-29T16:22:09+00:00","author":{"@id":"http:\/\/arumel.com\/#\/schema\/person\/1cdc5947f4270801792b02ec92332edc"},"breadcrumb":{"@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#primaryimage","url":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1","contentUrl":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1","width":793,"height":528},{"@type":"BreadcrumbList","@id":"http:\/\/arumel.com\/o-misterio-da-consulta-diabolica\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/arumel.com\/en\/"},{"@type":"ListItem","position":2,"name":"O misterio da consulta diab\u00f3lica"}]},{"@type":"WebSite","@id":"http:\/\/arumel.com\/#website","url":"http:\/\/arumel.com\/","name":"Arumel","description":"Outro sitio WordPress m\u00e1is","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/arumel.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/arumel.com\/#\/schema\/person\/1cdc5947f4270801792b02ec92332edc","name":"Alberto Pereiro","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a375a0c812714ad00388e6453d01b2231aa1ebc4e50587c1cf7eeee09e04eb64?s=96&d=mm&r=g","caption":"Alberto Pereiro"},"url":"https:\/\/arumel.com\/en\/author\/alberto\/"}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9uvW6-1kA","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":7624,"url":"https:\/\/arumel.com\/eu\/o-misterio-da-consulta-diabolica\/","url_meta":{"origin":5120,"position":0},"title":"O misterio da consulta diab\u00f3lica","author":"Alberto Pereiro","date":"15 December, 2016","format":false,"excerpt":"","rel":"","context":"In &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/arumel.com\/eu\/oracle-eu\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":7890,"url":"https:\/\/arumel.com\/stored-outlines-en-standard-edition\/","url_meta":{"origin":5120,"position":1},"title":"Stored Outlines en Standard Edition","author":"Alberto Pereiro","date":"12 July, 2017","format":false,"excerpt":"","rel":"","context":"In &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/arumel.com\/oracle-2\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/07\/IMX0083.jpg?fit=1200%2C795&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/07\/IMX0083.jpg?fit=1200%2C795&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/07\/IMX0083.jpg?fit=1200%2C795&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/07\/IMX0083.jpg?fit=1200%2C795&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/07\/IMX0083.jpg?fit=1200%2C795&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":8988,"url":"https:\/\/arumel.com\/mellora-de-rendemendo-con-indexacion-de-valores-null-en-oracle\/","url_meta":{"origin":5120,"position":2},"title":"Mellora de rendemendo con indexaci\u00f3n de valores NULL en Oracle","author":"Alberto Pereiro","date":"19 April, 2018","format":false,"excerpt":"","rel":"","context":"In &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/arumel.com\/oracle-2\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/04\/riders.on_.the_.storm_-e1524149239453.jpg?fit=1200%2C674&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/04\/riders.on_.the_.storm_-e1524149239453.jpg?fit=1200%2C674&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/04\/riders.on_.the_.storm_-e1524149239453.jpg?fit=1200%2C674&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/04\/riders.on_.the_.storm_-e1524149239453.jpg?fit=1200%2C674&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/04\/riders.on_.the_.storm_-e1524149239453.jpg?fit=1200%2C674&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":7336,"url":"https:\/\/arumel.com\/mitos-y-realidades-de-la-virtualizacion-oracle-con-y-sin-vmware\/","url_meta":{"origin":5120,"position":3},"title":"Virtualizaci\u00f3n Oracle: Mitos e realidades (con e sen VMWare)","author":"Alberto Pereiro","date":"28 June, 2017","format":false,"excerpt":"","rel":"","context":"In &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/arumel.com\/oracle-2\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":7642,"url":"https:\/\/arumel.com\/all\/mitos-e-realidades-da-virtualizacion-oracle-con-e-sen-vmware\/","url_meta":{"origin":5120,"position":4},"title":"Virtualizaci\u00f3n Oracle: mitos e realidades con e sen VMWare","author":"Alberto Pereiro","date":"29 June, 2017","format":false,"excerpt":"Oracle non est\u00e1 soportado sobre VMWare FALSO. Oracle non certifica a s\u00faa base de datos sobre VMWare, e as soluci\u00f3ns que da est\u00e1n orientadas \u00f3 SO nativo e non a nivel de virtualizaci\u00f3n. Oracle dar\u00e1 sempre asistencia \u00f3s seus produtos despregados sobre VMWare, sempre que se poida demostrar que non\u2026","rel":"","context":"Similar post","block_context":{"text":"Similar post","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2017\/06\/Radiohead_Paranoid_Android_Magnus_Carlsson.jpg?fit=640%2C360&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":8950,"url":"https:\/\/arumel.com\/oracle-18c-zero-impact-patching-grid-infrastructure-clusterware-asm\/","url_meta":{"origin":5120,"position":5},"title":"Oracle 18c &#8211; &#8220;Zero Impact Patching&#8221; para Grid Infrastructure (Clusterware + ASM)","author":"Alberto Pereiro","date":"1 March, 2018","format":false,"excerpt":"","rel":"","context":"In &quot;Oracle&quot;","block_context":{"text":"Oracle","link":"https:\/\/arumel.com\/oracle-2\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/03\/anoitecer.jpg?fit=1200%2C570&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/03\/anoitecer.jpg?fit=1200%2C570&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/03\/anoitecer.jpg?fit=1200%2C570&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/03\/anoitecer.jpg?fit=1200%2C570&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2018\/03\/anoitecer.jpg?fit=1200%2C570&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/arumel.com\/wp-content\/uploads\/2016\/12\/vento_mareiro.jpg?fit=793%2C528&ssl=1","_links":{"self":[{"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/posts\/5120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/comments?post=5120"}],"version-history":[{"count":28,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/posts\/5120\/revisions"}],"predecessor-version":[{"id":7621,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/posts\/5120\/revisions\/7621"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/media\/5127"}],"wp:attachment":[{"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/media?parent=5120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/categories?post=5120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arumel.com\/en\/wp-json\/wp\/v2\/tags?post=5120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}