{"id":8077,"date":"2016-05-27T18:20:27","date_gmt":"2016-05-27T16:20:27","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/"},"modified":"2016-05-27T18:20:27","modified_gmt":"2016-05-27T16:20:27","slug":"extended-clusters-and-asm_preferred_read_failure_groups","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/","title":{"rendered":"Extended clusters and asm_preferred_read_failure_groups"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nWhen you have 2 sites that are not too far you can build an extended cluster. You have one node on each site. And you can also use ASM normal redundancy to store data on each site (each diskgroup has a failure group for each site). Writes are multiplexed, so the latency between the two sites increases the write time. By default, reads can be done from one or the other site. But we can, and should, define that preference goes to local reads.<br \/>\n<!--more--><\/p>\n<p>The setup is easy. In the ASM instance you list the failure groups that are on the same site, with the &#8216;asm_preferred_read_failure_groups&#8217; parameter. You set that with an ALTER SYSTEM SCOPE=spfile SID=&#8230; because you will have different values for each instance. Of course, that supposes that you know the SID of the ASM instance that run on a specific site. If you are in Flex ASM, don&#8217;t ask. Wait 12.2 or read Bertrand Drouvot <a href=\"https:\/\/bdrouvot.wordpress.com\/2013\/07\/02\/flex-asm-12c-12-1-and-extended-rac-be-careful-to-unpreferred-read\/\" target=\"_blank\" rel=\"noopener noreferrer\">blog post<\/a><\/p>\n<p>I&#8217;m on an extended cluster where the two sites have between 0.3 and 0.4 milliseconds of latency. I&#8217;m checking the storage with SLOB so this is the occasion to check how asm_preferred_read_failure_groups helps in I\/O latency.<\/p>\n<p>I use a simple SLOB configuration for physical I\/O, read only, single block, and check the wait event histogram for &#8216;db file sequential read&#8217;.<br \/>\nHere is an example of output:<\/p>\n<pre><code>\nEVENT                          WAIT_TIME_MICRO WAIT_COUNT WAIT_TIME_FORMAT\n------------------------------ --------------- ---------- ------------------------------\ndb file sequential read                      1          0 1 microsecond\ndb file sequential read                      2          0 2 microseconds\ndb file sequential read                      4          0 4 microseconds\ndb file sequential read                      8          0 8 microseconds\ndb file sequential read                     16          0 16 microseconds\ndb file sequential read                     32          0 32 microseconds\ndb file sequential read                     64          0 64 microseconds\ndb file sequential read                    128          0 128 microseconds\t\ndb file sequential read                    256        538 256 microseconds\ndb file sequential read                    512       5461 512 microseconds\ndb file sequential read                   1024       2383 1 millisecond\ndb file sequential read                   2048        123 2 milliseconds\ndb file sequential read                   4096        148 4 milliseconds\ndb file sequential read                   8192        682 8 milliseconds\ndb file sequential read                  16384       3777 16 milliseconds\ndb file sequential read                  32768       1977 32 milliseconds\ndb file sequential read                  65536        454 65 milliseconds\ndb file sequential read                 131072         68 131 milliseconds\ndb file sequential read                 262144          6 262 milliseconds\n<\/code><\/pre>\n<p>It seems that half of the reads are served by the array cache and the other half are above disk latency time.<\/p>\n<p>Now I set the asm_preferred_read_failure_groups to the remote site, to measure reads coming from there.<\/p>\n<pre><code>\nalter system set asm_preferred_read_failure_groups='DATA1_MIR.FAILGRP_SH' scope=memory;\n<\/code><\/pre>\n<p>and here is the result on similar workload:<\/p>\n<pre><code>\nEVENT                          WAIT_TIME_MICRO WAIT_COUNT WAIT_TIME_FORMAT\n------------------------------ --------------- ---------- ------------------------------\ndb file sequential read                      1          0 1 microsecond\ndb file sequential read                      2          0 2 microseconds\ndb file sequential read                      4          0 4 microseconds\ndb file sequential read                      8          0 8 microseconds\ndb file sequential read                     16          0 16 microseconds\ndb file sequential read                     32          0 32 microseconds\ndb file sequential read                     64          0 64 microseconds\ndb file sequential read                    128          0 128 microseconds\ndb file sequential read                    256          0 256 microseconds\ndb file sequential read                    512       5425 512 microseconds\ndb file sequential read                   1024       6165 1 millisecond\ndb file sequential read                   2048        150 2 milliseconds\ndb file sequential read                   4096         89 4 milliseconds\ndb file sequential read                   8192        630 8 milliseconds\ndb file sequential read                  16384       3598 16 milliseconds\ndb file sequential read                  32768       1903 32 milliseconds\ndb file sequential read                  65536        353 65 milliseconds\ndb file sequential read                 131072         36 131 milliseconds\ndb file sequential read                 262144          0 262 milliseconds\ndb file sequential read                 524288          1 524 milliseconds\n<\/code><\/pre>\n<p>The pattern is similar except that I&#8217;ve nothing lower than 0.5 millisecond. I\/Os served by the storage cache have there the additional latency of 0.3 milliseconds from the remote site. Of course, when we are above the millisecond, we don&#8217;t see the difference.<\/p>\n<p>Now let&#8217;s set the right setting where preference should go to local reads:<\/p>\n<pre><code>\nalter system set asm_preferred_read_failure_groups='DATA1_MIR.FAILGRP_VE' scope=memory;\n<\/code><\/pre>\n<p>and the result:<\/p>\n<pre><code>\nEVENT                          WAIT_TIME_MICRO WAIT_COUNT WAIT_TIME_FORMAT\n------------------------------ --------------- ---------- ------------------------------\ndb file sequential read                      1          0 1 microsecond\ndb file sequential read                      2          0 2 microseconds\ndb file sequential read                      4          0 4 microseconds\ndb file sequential read                      8          0 8 microseconds\ndb file sequential read                     16          0 16 microseconds\ndb file sequential read                     32          0 32 microseconds\ndb file sequential read                     64          0 64 microseconds\ndb file sequential read                    128          0 128 microseconds\ndb file sequential read                    256       1165 256 microseconds\ndb file sequential read                    512       9465 512 microseconds\ndb file sequential read                   1024        519 1 millisecond\ndb file sequential read                   2048        184 2 milliseconds\ndb file sequential read                   4096        227 4 milliseconds\ndb file sequential read                   8192        705 8 milliseconds\ndb file sequential read                  16384       3350 16 milliseconds\ndb file sequential read                  32768       1743 32 milliseconds\ndb file sequential read                  65536        402 65 milliseconds\ndb file sequential read                 131072         42 131 milliseconds\ndb file sequential read                 262144          1 262 milliseconds\n<\/code><\/pre>\n<p>Here the fast reads are around 0.5 millisecond. And one thousand reads had a service time lower than 0.3 milliseconds, which was not possible when reading from the remote site.<\/p>\n<p>Here is the pattern in in an Excel chart where you see no big difference for latency above 4 milliseconds.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp.png\" alt=\"CapturePrefFailGrp\" width=\"1151\" height=\"837\" class=\"alignnone size-full wp-image-8856\" \/><\/a><\/p>\n<p>With efficient storage array, extended cluster latency may penalize performance of writes. However, writes should be asynchronous (DBRW) so the latency is not part of the user response time. I&#8217;m not talking about redo logs here. For redo you have to choose to put it on a local only diskgroup or on a mirrored one. This depends on availability requirements and latency between the two sites. <\/p>\n<p>So, when you have non uniform latency among failure groups, don&#8217;t forget to set asm_preferred_read_failure_groups. And test it with SLOB as I did here. Wat you expect from theorical latencies should be visible in the wait event histogram.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . When you have 2 sites that are not too far you can build an extended cluster. You have one node on each site. And you can also use ASM normal redundancy to store data on each site (each diskgroup has a failure group for each site). Writes are multiplexed, so the [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":8079,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[37,38,96,624],"type_dbi":[],"class_list":["post-8077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-asm","tag-cluster","tag-oracle","tag-slob"],"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>Extended clusters and asm_preferred_read_failure_groups - 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\/extended-clusters-and-asm_preferred_read_failure_groups\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extended clusters and asm_preferred_read_failure_groups\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . When you have 2 sites that are not too far you can build an extended cluster. You have one node on each site. And you can also use ASM normal redundancy to store data on each site (each diskgroup has a failure group for each site). Writes are multiplexed, so the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-27T16:20:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1151\" \/>\n\t<meta property=\"og:image:height\" content=\"837\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\/extended-clusters-and-asm_preferred_read_failure_groups\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Extended clusters and asm_preferred_read_failure_groups\",\"datePublished\":\"2016-05-27T16:20:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\"},\"wordCount\":514,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png\",\"keywords\":[\"ASM\",\"Cluster\",\"Oracle\",\"SLOB\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\",\"name\":\"Extended clusters and asm_preferred_read_failure_groups - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png\",\"datePublished\":\"2016-05-27T16:20:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png\",\"width\":1151,\"height\":837},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extended clusters and asm_preferred_read_failure_groups\"}]},{\"@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":"Extended clusters and asm_preferred_read_failure_groups - 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\/extended-clusters-and-asm_preferred_read_failure_groups\/","og_locale":"en_US","og_type":"article","og_title":"Extended clusters and asm_preferred_read_failure_groups","og_description":"By Franck Pachot . When you have 2 sites that are not too far you can build an extended cluster. You have one node on each site. And you can also use ASM normal redundancy to store data on each site (each diskgroup has a failure group for each site). Writes are multiplexed, so the [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/","og_site_name":"dbi Blog","article_published_time":"2016-05-27T16:20:27+00:00","og_image":[{"width":1151,"height":837,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png","type":"image\/png"}],"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\/extended-clusters-and-asm_preferred_read_failure_groups\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Extended clusters and asm_preferred_read_failure_groups","datePublished":"2016-05-27T16:20:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/"},"wordCount":514,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png","keywords":["ASM","Cluster","Oracle","SLOB"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/","url":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/","name":"Extended clusters and asm_preferred_read_failure_groups - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png","datePublished":"2016-05-27T16:20:27+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/CapturePrefFailGrp-1.png","width":1151,"height":837},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/extended-clusters-and-asm_preferred_read_failure_groups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Extended clusters and asm_preferred_read_failure_groups"}]},{"@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\/8077","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=8077"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8077\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/8079"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=8077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=8077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=8077"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=8077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}