{"id":14441,"date":"2020-07-20T14:13:59","date_gmt":"2020-07-20T12:13:59","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/"},"modified":"2020-07-20T14:13:59","modified_gmt":"2020-07-20T12:13:59","slug":"oracle-ash-sql_plan_line_id-in-adaptive-plans","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/","title":{"rendered":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans"},"content":{"rendered":"<p>There are several methods to find out where time is spent in an execution plan of a query running in an Oracle database. Classical methods like SQL Trace and running a formatter tool like tkprof on the raw trace, or newer methods like SQL Monitor (when the Tuning Pack has been licensed) or running a query with the GATHER_PLAN_STATISTICS-hint (or with statistics_level=all set in the session) and then using DBMS_XPLAN.DISPLAY_CURSOR(format=&gt;&#8217;ALLSTATS LAST&#8217;). However, what I often use is the information in SQL_PLAN_LINE_ID of Active Session History (ASH). I.e. more detailed by sampling every second in the recent past through V$ACTIVE_SESSION_HISTORY or in the AWR-history through DBA_HIST_ACTIVE_SESS_HISTORY. However, you have to be careful when interpreting the ASH SQL_PLAN_LINE_ID in an adaptive plan.<\/p>\n<p>Here&#8217;s an example:<\/p>\n<p>REMARK: I artificially slowed down the processing with the method described by Chris Antognini here: <a href=\"https:\/\/antognini.ch\/2013\/12\/adaptive-plans-in-active-session-history\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/antognini.ch\/2013\/12\/adaptive-plans-in-active-session-history\/<\/a><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @test\n\nDEPARTMENT_NAME\n------------------------------\nExecutive\nIT\nFinance\nPurchasing\nShipping\nSales\nAdministration\nMarketing\nHuman Resources\nPublic Relations\nAccounting\n\n11 rows selected.\n\nElapsed: 00:00:27.83\nSQL&gt; select * from table(dbms_xplan.display_cursor(format=&gt;'ALLSTATS LAST'));\n\nPLAN_TABLE_OUTPUT\n-----------------------------------------------------------------------------------------------\nSQL_ID  8nuct789bh45m, child number 0\n-------------------------------------\n select distinct DEPARTMENT_NAME from DEPARTMENTS d   join EMPLOYEES e\nusing(DEPARTMENT_ID)   where d.LOCATION_ID like '%0' and e.SALARY&gt;2000\nburn_cpu(e.employee_id\/e.employee_id\/4) = 1\n\nPlan hash value: 1057942366\n\n------------------------------------------------------------------------------------------------------------------------\n| Id  | Operation           | Name        | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |\n------------------------------------------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT    |             |      1 |        |     11 |00:00:27.82 |      12 |       |       |          |\n|   1 |  HASH UNIQUE        |             |      1 |      1 |     11 |00:00:27.82 |      12 |  1422K|  1422K|61440  (0)|\n|*  2 |   HASH JOIN         |             |      1 |      1 |    106 |00:00:27.82 |      12 |  1572K|  1572K| 1592K (0)|\n|*  3 |    TABLE ACCESS FULL| DEPARTMENTS |      1 |      1 |     27 |00:00:00.01 |       6 |       |       |          |\n|*  4 |    TABLE ACCESS FULL| EMPLOYEES   |      1 |      1 |    107 |00:00:27.82 |       6 |       |       |          |\n------------------------------------------------------------------------------------------------------------------------\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - access(\"D\".\"DEPARTMENT_ID\"=\"E\".\"DEPARTMENT_ID\")\n   3 - filter(TO_CHAR(\"D\".\"LOCATION_ID\") LIKE '%0')\n   4 - filter((\"E\".\"SALARY\"&gt;2000 AND \"BURN_CPU\"(\"E\".\"EMPLOYEE_ID\"\/\"E\".\"EMPLOYEE_ID\"\/4)=1))\n\nNote\n-----\n   - this is an adaptive plan\n\n\n30 rows selected.\n<\/pre>\n<p>So I&#8217;d expect to see SQL_PLAN_LINE_ID = 4 in ASH for the 28 seconds of wait time here. But it&#8217;s different:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; select sql_plan_line_id, count(*) from v$active_session_history \n   2 where sql_id='8nuct789bh45m'and sql_plan_hash_value=1057942366 group by sql_plan_line_id;\n\nSQL_PLAN_LINE_ID   COUNT(*)\n---------------- ----------\n               9         28\n\n1 row selected.\n<\/pre>\n<p>The 28 seconds are spent on SQL_PLAN_LINE_ID 9. Why that? <\/p>\n<p>The reason is that ASH provides the SQL_PLAN_LINE_ID in adaptive plans according the whole adaptive plan:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; select * from table(dbms_xplan.display_cursor('8nuct789bh45m',format=&gt;'+ADAPTIVE'));\n\nPLAN_TABLE_OUTPUT\n--------------------------------------------------------------------------------------------\nSQL_ID  8nuct789bh45m, child number 0\n-------------------------------------\n select distinct DEPARTMENT_NAME from DEPARTMENTS d   join EMPLOYEES e\nusing(DEPARTMENT_ID)   where d.LOCATION_ID like '%0' and e.SALARY&gt;2000\nburn_cpu(e.employee_id\/e.employee_id\/4) = 1\n\nPlan hash value: 1057942366\n\n------------------------------------------------------------------------------------------------------\n|   Id  | Operation                      | Name              | Rows  | Bytes | Cost (%CPU)| Time     |\n------------------------------------------------------------------------------------------------------\n|     0 | SELECT STATEMENT               |                   |       |       |     5 (100)|          |\n|     1 |  HASH UNIQUE                   |                   |     1 |    30 |     5  (20)| 00:00:01 |\n|  *  2 |   HASH JOIN                    |                   |     1 |    30 |     4   (0)| 00:00:01 |\n|-    3 |    NESTED LOOPS                |                   |     1 |    30 |     4   (0)| 00:00:01 |\n|-    4 |     NESTED LOOPS               |                   |    10 |    30 |     4   (0)| 00:00:01 |\n|-    5 |      STATISTICS COLLECTOR      |                   |       |       |            |          |\n|  *  6 |       TABLE ACCESS FULL        | DEPARTMENTS       |     1 |    19 |     3   (0)| 00:00:01 |\n|- *  7 |      INDEX RANGE SCAN          | EMP_DEPARTMENT_IX |    10 |       |     0   (0)|          |\n|- *  8 |     TABLE ACCESS BY INDEX ROWID| EMPLOYEES         |     1 |    11 |     1   (0)| 00:00:01 |\n|  *  9 |    TABLE ACCESS FULL           | EMPLOYEES         |     1 |    11 |     1   (0)| 00:00:01 |\n------------------------------------------------------------------------------------------------------\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - access(\"D\".\"DEPARTMENT_ID\"=\"E\".\"DEPARTMENT_ID\")\n   6 - filter(TO_CHAR(\"D\".\"LOCATION_ID\") LIKE '%0')\n   7 - access(\"D\".\"DEPARTMENT_ID\"=\"E\".\"DEPARTMENT_ID\")\n   8 - filter((\"E\".\"SALARY\"&gt;2000 AND \"BURN_CPU\"(\"E\".\"EMPLOYEE_ID\"\/\"E\".\"EMPLOYEE_ID\"\/4)=1))\n   9 - filter((\"E\".\"SALARY\"&gt;2000 AND \"BURN_CPU\"(\"E\".\"EMPLOYEE_ID\"\/\"E\".\"EMPLOYEE_ID\"\/4)=1))\n\nNote\n-----\n   - this is an adaptive plan (rows marked '-' are inactive)\n\n\n37 rows selected.\n<\/pre>\n<p>So here we see the correct line 9. It&#8217;s actually a good idea to use <\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nformat=&gt;'+ADAPTIVE'\n<\/pre>\n<p>when gathering plan statistics (through GATHER_PLAN_STATISTICS-hint or STATISTICS_LEVEL=ALL):<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL&gt; @test\n\nDEPARTMENT_NAME\n------------------------------\nExecutive\nIT\nFinance\nPurchasing\nShipping\nSales\nAdministration\nMarketing\nHuman Resources\nPublic Relations\nAccounting\n\n11 rows selected.\n\nElapsed: 00:00:27.96\nSQL&gt; select * from table(dbms_xplan.display_cursor(format=&gt;'ALLSTATS LAST +ADAPTIVE'));\n\nPLAN_TABLE_OUTPUT\n----------------------------------------------------------------------------------------\nSQL_ID  8nuct789bh45m, child number 0\n-------------------------------------\n select distinct DEPARTMENT_NAME from DEPARTMENTS d   join EMPLOYEES e\nusing(DEPARTMENT_ID)   where d.LOCATION_ID like '%0' and e.SALARY&gt;2000\nburn_cpu(e.employee_id\/e.employee_id\/4) = 1\n\nPlan hash value: 1057942366\n\n-------------------------------------------------------------------------------------------------------------------------------------------\n|   Id  | Operation                      | Name              | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |\n-------------------------------------------------------------------------------------------------------------------------------------------\n|     0 | SELECT STATEMENT               |                   |      1 |        |     11 |00:00:27.85 |    1216 |       |       |          |\n|     1 |  HASH UNIQUE                   |                   |      1 |      1 |     11 |00:00:27.85 |    1216 |  1422K|  1422K|73728  (0)|\n|  *  2 |   HASH JOIN                    |                   |      1 |      1 |    106 |00:00:27.85 |    1216 |  1572K|  1572K| 1612K (0)|\n|-    3 |    NESTED LOOPS                |                   |      1 |      1 |     27 |00:00:00.01 |       6 |       |       |          |\n|-    4 |     NESTED LOOPS               |                   |      1 |     10 |     27 |00:00:00.01 |       6 |       |       |          |\n|-    5 |      STATISTICS COLLECTOR      |                   |      1 |        |     27 |00:00:00.01 |       6 |       |       |          |\n|  *  6 |       TABLE ACCESS FULL        | DEPARTMENTS       |      1 |      1 |     27 |00:00:00.01 |       6 |       |       |          |\n|- *  7 |      INDEX RANGE SCAN          | EMP_DEPARTMENT_IX |      0 |     10 |      0 |00:00:00.01 |       0 |       |       |          |\n|- *  8 |     TABLE ACCESS BY INDEX ROWID| EMPLOYEES         |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |\n|  *  9 |    TABLE ACCESS FULL           | EMPLOYEES         |      1 |      1 |    107 |00:00:27.85 |    1210 |       |       |          |\n-------------------------------------------------------------------------------------------------------------------------------------------\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - access(\"D\".\"DEPARTMENT_ID\"=\"E\".\"DEPARTMENT_ID\")\n   6 - filter(TO_CHAR(\"D\".\"LOCATION_ID\") LIKE '%0')\n   7 - access(\"D\".\"DEPARTMENT_ID\"=\"E\".\"DEPARTMENT_ID\")\n   8 - filter((\"E\".\"SALARY\"&gt;2000 AND \"BURN_CPU\"(\"E\".\"EMPLOYEE_ID\"\/\"E\".\"EMPLOYEE_ID\"\/4)=1))\n   9 - filter((\"E\".\"SALARY\"&gt;2000 AND \"BURN_CPU\"(\"E\".\"EMPLOYEE_ID\"\/\"E\".\"EMPLOYEE_ID\"\/4)=1))\n\nNote\n-----\n   - this is an adaptive plan (rows marked '-' are inactive)\n\n\n37 rows selected.\n<\/pre>\n<p>Summary: Be careful checking SQL_PLAN_LINE_IDs in adaptive plans. This seems obvious in simple plans like the one above, but you may go in wrong directions if there are plans with hundreds of lines. Your analysis may be wrong if you are looking at the wrong plan step. To do some further validation, you may query sql_plan_operation, sql_plan_options from v$active_session_history as well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are several methods to find out where time is spent in an execution plan of a query running in an Oracle database. Classical methods like SQL Trace and running a formatter tool like tkprof on the raw trace, or newer methods like SQL Monitor (when the Tuning Pack has been licensed) or running a [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[665,699,96,2038],"type_dbi":[],"class_list":["post-14441","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-adaptive","tag-ash","tag-oracle","tag-sql_plan_line_id"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle ASH SQL_PLAN_LINE_ID in adaptive plans - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans\" \/>\n<meta property=\"og:description\" content=\"There are several methods to find out where time is spent in an execution plan of a query running in an Oracle database. Classical methods like SQL Trace and running a formatter tool like tkprof on the raw trace, or newer methods like SQL Monitor (when the Tuning Pack has been licensed) or running a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-20T12:13:59+00:00\" \/>\n<meta name=\"author\" content=\"Clemens Bleile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ifgtxD2SrQ8r!YuXj\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Clemens Bleile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\"},\"author\":{\"name\":\"Clemens Bleile\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"headline\":\"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans\",\"datePublished\":\"2020-07-20T12:13:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\"},\"wordCount\":327,\"commentCount\":0,\"keywords\":[\"adaptive\",\"ASH\",\"Oracle\",\"sql_plan_line_id\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\",\"name\":\"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-07-20T12:13:59+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da\",\"name\":\"Clemens Bleile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g\",\"caption\":\"Clemens Bleile\"},\"description\":\"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.\",\"sameAs\":[\"https:\/\/www.dbi-services.com\",\"https:\/\/x.com\/ifgtxD2SrQ8r!YuXj\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans - dbi Blog","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":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/","og_locale":"en_US","og_type":"article","og_title":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans","og_description":"There are several methods to find out where time is spent in an execution plan of a query running in an Oracle database. Classical methods like SQL Trace and running a formatter tool like tkprof on the raw trace, or newer methods like SQL Monitor (when the Tuning Pack has been licensed) or running a [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/","og_site_name":"dbi Blog","article_published_time":"2020-07-20T12:13:59+00:00","author":"Clemens Bleile","twitter_card":"summary_large_image","twitter_creator":"@ifgtxD2SrQ8r!YuXj","twitter_misc":{"Written by":"Clemens Bleile","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/"},"author":{"name":"Clemens Bleile","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"headline":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans","datePublished":"2020-07-20T12:13:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/"},"wordCount":327,"commentCount":0,"keywords":["adaptive","ASH","Oracle","sql_plan_line_id"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/","name":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-07-20T12:13:59+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-ash-sql_plan_line_id-in-adaptive-plans\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle ASH SQL_PLAN_LINE_ID in adaptive plans"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0ac04011f60f2e93c115358d0789c2da","name":"Clemens Bleile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1f596609fc67cb28ed714e7bccc81ed4cd73b8582a8148a490c77daeb2fde21a?s=96&d=mm&r=g","caption":"Clemens Bleile"},"description":"Clemens Bleile has more than 30 years of IT experience, thirteen in Oracle Support and fifteen in Oracle Consulting. He is specialized in Oracle Database Performance Tuning (SQL Tuning, DB Tuning) and developing an Oracle DB IT architecture (highly available, low-maintenance, cost efficient storage of data). He is an expert in problem analysis and resolution. Prior to joining dbi services, Clemens Bleile was Manager of the EMEA Database Performance team at the Oracle Global Customer Support Services. Clemens Bleile is Oracle Certified Professional 11g, 12c and Oracle Certified Expert for Performance Management and Tuning and holds a Master Degree, Business Information Systems from the Fachhochschule Furtwangen, Germany.","sameAs":["https:\/\/www.dbi-services.com","https:\/\/x.com\/ifgtxD2SrQ8r!YuXj"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/clemens-bleile\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14441"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14441\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14441"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}