{"id":11736,"date":"2018-09-24T10:01:36","date_gmt":"2018-09-24T08:01:36","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/"},"modified":"2018-09-24T10:01:36","modified_gmt":"2018-09-24T08:01:36","slug":"sql-plan-stability-in-11g-using-stored-outlines","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/","title":{"rendered":"SQL Plan stability in 11G using stored outlines"},"content":{"rendered":"<p>Plan stability preserves execution plans in stored outlines. An outline is implemented as a set of optimizer hints that are associated with the SQL statement. If the use of the outline is enabled for the statement, then Oracle Database automatically considers the stored hints and tries to generate an execution plan in accordance with those hints (Oracle documentation).<\/p>\n<p>Oracle Database can create a public or private stored outline for one or all SQL statements. The optimizer then generates equivalent execution plans from the outlines when you enable the use of stored outlines. You can group outlines into categories and control which category of outlines Oracle Database uses to simplify outline administration and deployment (Oracle documentation).<\/p>\n<p>The plans that Oracle Database maintains in stored outlines remain consistent despite changes to a system&#8217;s configuration or statistics. Using stored outlines also stabilizes the generated execution plan if the optimizer changes in subsequent Oracle Database releases (Oracle documentation).<\/p>\n<p>&nbsp;<\/p>\n<p>Many times we are into the situation when the performance of a query regressing, or the optimizer is not able to choose the better execution plan.<\/p>\n<p>In the next lines I will try to describe a scenario that needs the usage of a stored outline on a Standard Edition 2 Database:<\/p>\n<p>&#8211;we will identify the different plans that exists for our sql_id<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select hash_value,child_number,sql_id,executions from v$sql where sql_id='574gkxxxxxxxx';\n\nHASH_VALUE CHILD_NUMBER SQL_ID        EXECUTIONS \n---------- ------------ ------------- ---------- \n 524000000            0 574gkxxxxxxxx          4 \n 576000001            1 574gkxxxxxxxx          5<\/pre>\n<p>&nbsp;<\/p>\n<p>Between the two different plans, we know that the best one is that with the cost 15 and the hash_value : <strong>444444444444 <\/strong>, but which is not all the time choosed by the optimizer, causing peak of performance<\/p>\n<p>SQL&gt; select * from table(dbms_xplan.display_cursor(&#8216;574gkxxxxxxxx&#8217;,0));<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">PLAN_TABLE_OUTPUT\n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\nSQL_ID  574gkxxxxxxxx, child number 0\n-------------------------------------\nSelect   &lt;qeury&gt;\n........................................................\n\nPlan hash value: 4444444444444\n\n-------------------------------------------------------------------------------------------------------------\n| Id  | Operation                      | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |\n-------------------------------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT               |                            |       |       |    15 (100)|       |\n|   1 |  UNION-ALL                     |                            |       |       |            |       |\n|*  2 |   FILTER                       |                            |       |       |            |       |\n|   3 |    NESTED LOOPS                |                            |       |       |            |       |\n|   4 |     NESTED LOOPS               |                            |     1 |    76 |     7  (15)| 00:00:01 |\n|   5 |      MERGE JOIN CARTESIAN      |                            |     1 |    52 |     5  (20)| 00:00:01 |\n|   6 |       SORT UNIQUE              |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|*  7 |        TABLE ACCESS FULL       |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|   8 |       BUFFER SORT              |                            |     1 |    26 |     3  (34)| 00:00:01 |\n|   9 |        SORT UNIQUE             |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 10 |         TABLE ACCESS FULL      |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 11 |      INDEX RANGE SCAN          |                            |     1 |       |     1   (0)| 00:00:01 |\n|* 12 |     TABLE ACCESS BY INDEX ROWID|                            |     1 |    24 |     2   (0)| 00:00:01 |\n|* 13 |   FILTER                       |                            |       |       |            |       |\n|  14 |    NESTED LOOPS                |                            |       |       |            |       |\n|  15 |     NESTED LOOPS               |                            |     1 |    76 |     8  (13)| 00:00:01 |\n|  16 |      MERGE JOIN CARTESIAN      |                            |     1 |    52 |     5  (20)| 00:00:01 |\n|  17 |       SORT UNIQUE              |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 18 |        TABLE ACCESS FULL       |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|  19 |       BUFFER SORT              |                            |     1 |    26 |     3  (34)| 00:00:01 |\n|  20 |        SORT UNIQUE             |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 21 |         TABLE ACCESS FULL      |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 22 |      INDEX RANGE SCAN          |                            |     1 |       |     2   (0)| 00:00:01 |\n|  23 |     TABLE ACCESS BY INDEX ROWID|                            |     1 |    24 |     3   (0)| 00:00:01 |\n-------------------------------------------------------------------------------------------------------------\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n\n   7 - filter(\"SERIAL#\"=1xxxxxxxxxxxx)\n  10 - filter(\"SERIAL#\"=1xxxxxxxxxxxx)\n----------------------------------------------<\/pre>\n<p>&nbsp;<\/p>\n<p>In order to fix this , we will create and enable an outline, that should help the optimizer to choose always the best plan:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\"> BEGIN\n      DBMS_OUTLN.create_outline(hash_value    =&gt;52400000,child_number  =&gt; 0);\n    END;\n  \/\n\nPL\/SQL procedure successfully completed.\n\nSQL&gt;\nSQL&gt; alter system set use_stored_outlines=TRUE;\n\nSystem altered.\n\n<\/pre>\n<p>As the parameter &#8220;use_stored_outlines&#8221; is a &#8216;pseudo&#8217; parameter, is not persistent over the reboot of the system, for that reason we had to create this trigger on startup database.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">SQL&gt; create or replace trigger my_trigger after startup on database\n  2  begin\n  3  execute immediate 'alter system set use_stored_outlines=TRUE';\n  4  end;\n  5  \/\n\nTrigger created.<\/pre>\n<p>Now we can check , if the outline is used:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">NAME                           OWNER                          CATEGORY                       USED\n------------------------------ ------------------------------ ------------------------------ ------\nSYS_OUTLINE_1xxxxxxxxxxxxxxxx  TEST                           DEFAULT                        USED\n\nAnd also, to check that the execution is taking in account\n\n<\/pre>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">SQL&gt; select * from table(dbms_xplan.display_cursor('574gkxxxxxxxx',0));\n\nPLAN_TABLE_OUTPUT\n--------------------------------------------------------------------------------------------------------------------------------------------\n\nSQL_ID  574gkxxxxxxxx, child number 0\n-------------------------------------\nSelect  \n...................\n\nPlan hash value: 444444444444\n\n-------------------------------------------------------------------------------------------------------------\n| Id  | Operation                      | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |\n-------------------------------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT               |                            |       |       |    15 (100)|       |\n|   1 |  UNION-ALL                     |                            |       |       |            |       |\n|*  2 |   FILTER                       |                            |       |       |            |       |\n|   3 |    NESTED LOOPS                |                            |       |       |            |       |\n|   4 |     NESTED LOOPS               |                            |     1 |    76 |     7  (15)| 00:00:01 |\n|   5 |      MERGE JOIN CARTESIAN      |                            |     1 |    52 |     5  (20)| 00:00:01 |\n|   6 |       SORT UNIQUE              |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|*  7 |        TABLE ACCESS FULL       |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|   8 |       BUFFER SORT              |                            |     1 |    26 |     3  (34)| 00:00:01 |\n|   9 |        SORT UNIQUE             |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 10 |         TABLE ACCESS FULL      |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 11 |      INDEX RANGE SCAN          |                            |     1 |       |     1   (0)| 00:00:01 |\n|* 12 |     TABLE ACCESS BY INDEX ROWID|                            |     1 |    24 |     2   (0)| 00:00:01 |\n|* 13 |   FILTER                       |                            |       |       |            |       |\n|  14 |    NESTED LOOPS                |                            |       |       |            |       |\n|  15 |     NESTED LOOPS               |                            |     1 |    76 |     8  (13)| 00:00:01 |\n|  16 |      MERGE JOIN CARTESIAN      |                            |     1 |    52 |     5  (20)| 00:00:01 |\n|  17 |       SORT UNIQUE              |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 18 |        TABLE ACCESS FULL       |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|  19 |       BUFFER SORT              |                            |     1 |    26 |     3  (34)| 00:00:01 |\n|  20 |        SORT UNIQUE             |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 21 |         TABLE ACCESS FULL      |                            |     1 |    26 |     2   (0)| 00:00:01 |\n|* 22 |      INDEX RANGE SCAN          |                            |     1 |       |     2   (0)| 00:00:01 |\n|  23 |     TABLE ACCESS BY INDEX ROWID|                            |     1 |    24 |     3   (0)| 00:00:01 |\n-------------------------------------------------------------------------------------------------------------\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n\n   7 - filter(\"SERIAL#\"=1xxxxxxxxxxx)\n  10 - filter(\"SERIAL#\"=1xxxxxxxxxxx)\n  \nNote\n-----\n   - outline \"SYS_OUTLINE_18xxxxxxxxxxxx\" used for this statement\n<\/pre>\n<p>To use stored outlines when Oracle compiles a SQL statement we need to enable them by setting the system parameter USE_STORED_OUTLINES to TRUE or to a category name. This parameter can be also be set at the session level.<br \/>\nBy setting this parameter to TRUE, the category by default on which the outlines are created is DEFAULT.<br \/>\nIf you prefer to add a category on the procedure of outline creation, Oracle will used this outline category until you provide another category value or you disable the usage of the outlines by putting the parameter USE_STORED_OUTLINE to FALSE.<\/p>\n<p>Additionally, I would like to mention that outlines are unsupported feature from Oracle, but still helps us to fix performance issue on Standard Edition configurations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Plan stability preserves execution plans in stored outlines. An outline is implemented as a set of optimizer hints that are associated with the SQL statement. If the use of the outline is enabled for the statement, then Oracle Database automatically considers the stored hints and tries to generate an execution plan in accordance with those [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[],"tags":[],"type_dbi":[],"class_list":["post-11736","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Plan stability in 11G using stored outlines - 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\/sql-plan-stability-in-11g-using-stored-outlines\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Plan stability in 11G using stored outlines\" \/>\n<meta property=\"og:description\" content=\"Plan stability preserves execution plans in stored outlines. An outline is implemented as a set of optimizer hints that are associated with the SQL statement. If the use of the outline is enabled for the statement, then Oracle Database automatically considers the stored hints and tries to generate an execution plan in accordance with those [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-24T08:01:36+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"SQL Plan stability in 11G using stored outlines\",\"datePublished\":\"2018-09-24T08:01:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/\"},\"wordCount\":462,\"commentCount\":0,\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/\",\"name\":\"SQL Plan stability in 11G using stored outlines - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2018-09-24T08:01:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-plan-stability-in-11g-using-stored-outlines\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Plan stability in 11G using stored outlines\"}]},{\"@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\\\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Plan stability in 11G using stored outlines - 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\/sql-plan-stability-in-11g-using-stored-outlines\/","og_locale":"en_US","og_type":"article","og_title":"SQL Plan stability in 11G using stored outlines","og_description":"Plan stability preserves execution plans in stored outlines. An outline is implemented as a set of optimizer hints that are associated with the SQL statement. If the use of the outline is enabled for the statement, then Oracle Database automatically considers the stored hints and tries to generate an execution plan in accordance with those [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/","og_site_name":"dbi Blog","article_published_time":"2018-09-24T08:01:36+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"SQL Plan stability in 11G using stored outlines","datePublished":"2018-09-24T08:01:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/"},"wordCount":462,"commentCount":0,"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/","name":"SQL Plan stability in 11G using stored outlines - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2018-09-24T08:01:36+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-plan-stability-in-11g-using-stored-outlines\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Plan stability in 11G using stored outlines"}]},{"@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\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11736","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11736"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11736\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11736"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}