{"id":5024,"date":"2015-06-25T17:43:25","date_gmt":"2015-06-25T15:43:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/"},"modified":"2015-06-25T17:43:25","modified_gmt":"2015-06-25T15:43:25","slug":"rac-buffer-states-xcur-scur-pi-ci","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/","title":{"rendered":"RAC buffer states: XCUR, SCUR, PI, CI"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nIn RAC, blocks are copied across instances by the Global Cache Service. In single instance, we have only two status: CR for consistent read clones where undo is applied, and CUR for the current version that can be modified (then being a dirty block). I&#8217;ts a bit more complex in RAC. Here is a brief example to show the buffer status in Global Cache.<\/p>\n<h3>SCUR: shared current<\/h3>\n<p>I connect to one instance (I have a few singleton services. service ONE is on instance 3 and service TWO is on instance 1)<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/192.168.78.252\/ONE.racattack\nConnected.<\/code><\/pre>\n<p>and I query a row by ROWID in order to read only one block<\/p>\n<pre><code>SQL&gt; select rowid,DEMO.* from DEMO where rowid='&amp;rowid1';\nold   1: select rowid,DEMO.* from DEMO where rowid='&amp;rowid1'\nnew   1: select rowid,DEMO.* from DEMO where rowid='AAAXqxAALAAACUkAAD'\n\nROWID                      ID          N\n------------------ ---------- ----------\nAAAXqxAALAAACUkAAD         10         10<\/code><\/pre>\n<p>Here is the status of the buffer in the buffer cache:<\/p>\n<pre><code>SQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         3          1 scur       00000000B9FEA060 N N N N N N<\/code><\/pre>\n<p>The block has been read from disk by my instance. Without modification it is in SCUR status: it&#8217;s the current version of the block and can be shared.<\/p>\n<h3>SCUR copies<\/h3>\n<p>Now connecting to another instance<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/192.168.78.252\/TWO.racattack\nConnected.<\/code><\/pre>\n<p>and reading the same block<\/p>\n<pre><code>SQL&gt; select rowid,DEMO.* from DEMO where rowid='&amp;rowid1';\nold   1: select rowid,DEMO.* from DEMO where rowid='&amp;rowid1'\nnew   1: select rowid,DEMO.* from DEMO where rowid='AAAXqxAALAAACUkAAD'\n\nROWID                      ID          N\n------------------ ---------- ----------\nAAAXqxAALAAACUkAAD         10         10<\/code><\/pre>\n<p>let&#8217;s see what I have in my Global Cache:<\/p>\n<pre><code>SQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id,lock_element_addr;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         1          1 scur       00000000B0FAADC0 N N N N N N\n         3          1 scur       00000000B9FEA060 N N N N N N<\/code><\/pre>\n<p>non modified blocks can be shared: I have a copy on each instance.<\/p>\n<h3>XCUR: exclusive current<\/h3>\n<p>I&#8217;ll start a new case, I flush the buffer cache<\/p>\n<p>connecting to the first instance<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/192.168.78.252\/ONE.racattack\nConnected.<\/code><\/pre>\n<p>I&#8217;m now doing a modification with a select for update (which writes the lock in the block, so it&#8217;s a modification)<\/p>\n<pre><code>SQL&gt; select rowid,DEMO.* from DEMO where rowid='&amp;rowid1' for update;\nold   1: select rowid,DEMO.* from DEMO where rowid='&amp;rowid1' for update\nnew   1: select rowid,DEMO.* from DEMO where rowid='AAAXqxAALAAACUkAAD' for update\n\nROWID                      ID          N\n------------------ ---------- ----------\nAAAXqxAALAAACUkAAD         10         10\nnow the status in buffer cache is different:\n\nSQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id,lock_element_addr;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         3          1 cr         00               N N N N N N\n         3          1 xcur       00000000B9FEA060 Y N N N N N<\/code><\/pre>\n<p>So I have two buffers for the same block. The buffer that has been read and will not be current anymore because it has the rows before the modifications. It stays in consistent read (CR) status. The modified one is then the current one but cannot be shared: its the XCUR buffer where modifications will be done.<\/p>\n<h3>CR consistent read<\/h3>\n<p>Now I&#8217;ll read it from the second instance<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/192.168.78.252\/TWO.racattack\nConnected.\nSQL&gt; select rowid,DEMO.* from DEMO where rowid='&amp;rowid1';\nold   1: select rowid,DEMO.* from DEMO where rowid='&amp;rowid1'\nnew   1: select rowid,DEMO.* from DEMO where rowid='AAAXqxAALAAACUkAAD'\n\nROWID                      ID          N\n------------------ ---------- ----------\nAAAXqxAALAAACUkAAD         10         10<\/code><\/pre>\n<p>the block is read and I&#8217;ve another CR buffer:<\/p>\n<pre><code>SQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id,lock_element_addr;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         1          1 cr         00               N N N N N N\n         3          1 cr         00               N N N N N N\n         3          1 xcur       00000000B9FEA060 Y N N N N N<\/code><\/pre>\n<p>the CR buffer is at another SCN. A block can have several CR blocks (by default up to 6 per instance)<\/p>\n<h3>PI: past image<\/h3>\n<p>Let&#8217;s do a modification from the other instance<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/192.168.78.252\/TWO.racattack\nConnected.\nSQL&gt; select rowid,DEMO.* from DEMO where rowid='&amp;rowid1' for update;\nold   1: select rowid,DEMO.* from DEMO where rowid='&amp;rowid1' for update\nnew   1: select rowid,DEMO.* from DEMO where rowid='AAAXqxAALAAACUkAAD' for update\n\nROWID                      ID          N\n------------------ ---------- ----------\nAAAXqxAALAAACUkAAD         10         10<\/code><\/pre>\n<p>My modification must be done on the current version, which must be shipped to my instance<\/p>\n<pre><code>SQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id,lock_element_addr;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         1          1 cr         00               N N N N N N\n         1          1 cr         00               N N N N N N\n         1          1 xcur       00000000B0FAADC0 Y N N N N N\n         3          1 cr         00               N N N N N N\n         3          1 pi         00000000B9FEA060 Y N N N N N<\/code><\/pre>\n<p>and the previous current version remains as a PI &#8211; past image. It cannot be used for consistent reads but it is kept for recovery: if current block is lost, redo can be applied to the past image to recover it. See <a href=\"https:\/\/community.oracle.com\/thread\/919350\">Jonathan Lewis<\/a> explanation.<\/p>\n<h3>Checkpoint<\/h3>\n<p>As the past images are there in case of recovery, they are not needed once an instance has checkpointed the current block.<\/p>\n<pre><code>SQL&gt; connect sys\/oracle@\/\/192.168.78.252\/ONE.racattack as sysdba\nConnected.\nSQL&gt; alter system checkpoint;\nSystem altered.<\/code><\/pre>\n<p>afer the checkpoint on the instance that has the XCUR, there is no dirty buffer in any instance:<\/p>\n<pre><code>SQL&gt; select inst_id,class#,status,lock_element_addr,dirty,temp,ping,stale,direct,new from gv$bh where objd=(select data_object_id from dba_objects where owner='DEMO' and object_name='DEMO') and status!='free' order by inst_id,lock_element_addr;\n\n   INST_ID     CLASS# STATUS     LOCK_ELEMENT_ADD D T P S D N\n---------- ---------- ---------- ---------------- - - - - - -\n         1          1 cr         00               N N N N N N\n         1          1 cr         00               N N N N N N\n         1          1 xcur       00000000B0FAADC0 N N N N N N\n         3          1 cr         00               N N N N N N\n         3          1 cr         00               N N N N N N<\/code><\/pre>\n<p>the PI became a consistent read.<\/p>\n<h3>Summary<\/h3>\n<p>Here are the states we have seen here:<\/p>\n<p><b>XCUR<\/b>: current version of the block &#8211; holding an exclusive lock for it<\/p>\n<p><b>SCUR<\/b>: current version of the block that can be share because no modification were done<\/p>\n<p><b>CR<\/b>: only valid for consistent read, after applying the necessary undo to get it back to requried SCN<\/p>\n<p><b>PI<\/b>: past image of a modified current block, kept until the latest version is checkpointed<\/p>\n<p>and the other possible states:<\/p>\n<p><b>FREE<\/b>: The buffer is not currently in use.<\/p>\n<p><b>READ<\/b>: when the block is being read from disk<\/p>\n<p><b>MREC<\/b>: when the block is being recovered for media recovery<\/p>\n<p><b>IREC<\/b>: when the block is being recovered for crash recovery<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . In RAC, blocks are copied across instances by the Global Cache Service. In single instance, we have only two status: CR for consistent read clones where undo is applied, and CUR for the current version that can be modified (then being a dirty block). I&#8217;ts a bit more complex in RAC. [&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":[198,59],"tags":[96,535],"type_dbi":[],"class_list":["post-5024","post","type-post","status-publish","format-standard","hentry","category-database-management","category-oracle","tag-oracle","tag-rac"],"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>RAC buffer states: XCUR, SCUR, PI, CI - dbi Blog<\/title>\n<meta name=\"description\" content=\"A demo of Global Cache Service and buffer states\" \/>\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\/rac-buffer-states-xcur-scur-pi-ci\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RAC buffer states: XCUR, SCUR, PI, CI\" \/>\n<meta property=\"og:description\" content=\"A demo of Global Cache Service and buffer states\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-25T15:43:25+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=\"7 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\\\/rac-buffer-states-xcur-scur-pi-ci\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"RAC buffer states: XCUR, SCUR, PI, CI\",\"datePublished\":\"2015-06-25T15:43:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/\"},\"wordCount\":562,\"commentCount\":0,\"keywords\":[\"Oracle\",\"RAC\"],\"articleSection\":[\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/\",\"name\":\"RAC buffer states: XCUR, SCUR, PI, CI - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2015-06-25T15:43:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"A demo of Global Cache Service and buffer states\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/rac-buffer-states-xcur-scur-pi-ci\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RAC buffer states: XCUR, SCUR, PI, CI\"}]},{\"@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":"RAC buffer states: XCUR, SCUR, PI, CI - dbi Blog","description":"A demo of Global Cache Service and buffer states","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\/rac-buffer-states-xcur-scur-pi-ci\/","og_locale":"en_US","og_type":"article","og_title":"RAC buffer states: XCUR, SCUR, PI, CI","og_description":"A demo of Global Cache Service and buffer states","og_url":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/","og_site_name":"dbi Blog","article_published_time":"2015-06-25T15:43:25+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"RAC buffer states: XCUR, SCUR, PI, CI","datePublished":"2015-06-25T15:43:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/"},"wordCount":562,"commentCount":0,"keywords":["Oracle","RAC"],"articleSection":["Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/","url":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/","name":"RAC buffer states: XCUR, SCUR, PI, CI - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2015-06-25T15:43:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"A demo of Global Cache Service and buffer states","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/rac-buffer-states-xcur-scur-pi-ci\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"RAC buffer states: XCUR, SCUR, PI, CI"}]},{"@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\/5024","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=5024"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/5024\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=5024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=5024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=5024"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=5024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}