{"id":9737,"date":"2017-01-28T11:00:24","date_gmt":"2017-01-28T10:00:24","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/"},"modified":"2017-01-28T11:00:24","modified_gmt":"2017-01-28T10:00:24","slug":"oracle-12c-how-to-prevent-license-violation-with-active-data-guard","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/","title":{"rendered":"Oracle 12c &#8211; How to Prevent License Violation with Active Data Guard"},"content":{"rendered":"<h2>By William Sescu<\/h2>\n<p>There are some articles floating around how to prevent a license violation with Active Data Guard. Some of them related to an underscore parameter &#8220;_query_on_physical&#8221; and some of them related to a startup trigger. Both of them have advantages and disadvantages. E.g. regarding the &#8220;_query_on_physical&#8221; I can&#8217;t find any MOS Note about it, and I don&#8217;t know the side effects.<\/p>\n<p>Oracle gives us a hard time to disable features that we don&#8217;t want to be enabled by accident. It gets much better with 12.2 where you can use lockdown profiles. My colleague Franck explained it very well at the DOAG 2016 how this new feature works.<\/p>\n<p><a href=\"http:\/\/www.doag.org\/formes\/pubfiles\/8586609\/docs\/Konferenz\/2016\/vortraege\/Datenbank\/2016-DB-Franck_Pachot-Multitenant_New_Security_Features_Clarify_DevOps_DBA_roles-Praesentation.pdf\" target=\"_blank\" rel=\"noopener\">http:\/\/www.doag.org\/formes\/pubfiles\/8586609\/docs\/Konferenz\/2016\/vortraege\/Datenbank\/2016-DB-Franck_Pachot-Multitenant_New_Security_Features_Clarify_DevOps_DBA_roles-Praesentation.pdf<\/a><\/p>\n<p>But for now, I am on 12cR1 and I need a solution for that version. Especially with Active Data Guard it is very easy to activate it. Just type in &#8220;startup&#8221; on the Standby, and then you have it already. Nothing more is needed.<\/p>\n<p>Nevertheless, I have 12cR1 here, and my favorite way to prevent a license violation with Active Data Guard is related to cluster resources, in combination with the DataGuard Broker and an Observer. If all of them are in place and when you are on the right patch level, then it works. Especially the patch level is quite important. We will see later. What is also important, is that you should work only with the Broker command or with the srvctl utility.<\/p>\n<p>In my case I have a primary single instance called DBIT121_SITE1 and a standby single instance called DBIT121_SITE2. After the Data Guard has been setup, it is time to configure the Cluster Resources.<\/p>\n<p>In this particular case, the most important parameters when you add the database cluster resources are &#8220;role&#8221; and &#8220;startoption&#8221;<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ srvctl add database -h | egrep '(&lt;role&gt;|&lt;start_options&gt;)' | tail -2\n    -role &lt;role&gt;                   Role of the database (PRIMARY, PHYSICAL_STANDBY, LOGICAL_STANDBY, SNAPSHOT_STANDBY, FAR_SYNC)\n    -startoption &lt;start_options&gt;   Startup options for the database. Examples of startup options are OPEN, MOUNT, or \"READ ONLY\".<\/pre>\n<p>With the parameter &#8220;role&#8221; you specify the role that your database has at the moment (not the future role). The role adjustments are done later by the Broker whenever you do a switchover or failover.<\/p>\n<p>The role option is not only available with the &#8220;srvctl add database&#8221; command, it is also available with the &#8220;srvctl add service&#8221; command. Now it becomes really interesting. You tell Oracle to start the service only, if the role is PRIMARY.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ srvctl add service -h | grep '&lt;role&gt;'\n    -role &lt;role&gt;                   Role of the service (primary, physical_standby, logical_standby, snapshot_standby)<\/pre>\n<p>Ok. Let&#8217;s create the cluster resources now.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-- Primary\n$ srvctl add database -db DBIT121_SITE1 -oraclehome \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1 \n-dbtype SINGLE -instance DBIT121 -node dbidg01 \n-spfile \/u01\/app\/oracle\/admin\/DBIT121\/pfile\/spfileDBIT121.ora \n-pwfile \/u01\/app\/oracle\/admin\/DBIT121\/pfile\/orapwDBIT121 \n-role PRIMARY -startoption OPEN \n-dbname DBIT121\n\n$ srvctl add service -db DBIT121_SITE1 -service DBIT121_SERVICE -role primary \n-failovertype SELECT -notification TRUE -tafpolicy BASIC\n\n-- Standby\n$ srvctl add database -db DBIT121_SITE2 -oraclehome \/u01\/app\/oracle\/product\/12.1.0.2\/dbhome_1 \n-dbtype SINGLE -instance DBIT121 -node dbidg02  \n-spfile \/u01\/app\/oracle\/admin\/DBIT121\/pfile\/spfileDBIT121.ora \n-pwfile \/u01\/app\/oracle\/admin\/DBIT121\/pfile\/orapwDBIT121 \n-role PHYSICAL_STANDBY -startoption MOUNT \n-dbname DBIT121\n\n$ srvctl add service -db DBIT121_SITE2 -service DBIT121_SERVICE -role primary \n-failovertype SELECT -notification TRUE -tafpolicy BASIC<\/pre>\n<p>To test if everything works, simply do a &#8220;SWITCHOVER&#8221; with the Data Guard Broker and check the Cluster Resources afterwards. After a role change, you should see the following Cluster resource entries on the Primary<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ crsctl stat res ora.dbit121_site1.db -p | egrep '(USR_ORA_OPEN_MODE|ROLE)'\nROLE=PRIMARY\nUSR_ORA_OPEN_MODE=open<\/pre>\n<p>and these ones on the Standby<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ crsctl stat res ora.dbit121_site2.db -p | egrep '(USR_ORA_OPEN_MODE|ROLE)'\nROLE=PHYSICAL_STANDBY\nUSR_ORA_OPEN_MODE=mount<\/pre>\n<p>Oracle preserves the Open modes and also some other stuff like Block Change Tracking. If Active Data Guard was not enabled beforehand, it will also not be enabled afterwards (this is at least how it should be), and besides that, Oracle also disables the &#8220;Block Change Tracking&#8221; feature on the new Standby, because this would need the Active Data Guard license as well.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">alert.log\n...\nCompleted: ALTER DATABASE SWITCHOVER TO 'DBIT121_SITE2'\nTarget standby DBIT121_SITE2 did not have Active Data Guard enabled at the time of switchover.\nTo maintain Active Data Guard license compliance Block Change Tracking will be disabled.\nFri Jan 27 08:49:23 2017\n..<\/pre>\n<p>But the final and most important test is killing the PMON on the Standby. In GI version below 12.1.0.2 with 2016 Oct PSU, you might end up with Active Data Guard enabled. Opsssssss &#8230;<br \/>\nEverything was setup up correctly, but still not working like expected. I just have simulated that a background process dies. This could happen in reality for example due to a bug with &#8220;_use_single_log_writer=false&#8221; which is the default with 12c, or simply by someone accidently killing the wrong process.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ ps -ef | grep ora_pmon_DBIT121 | grep -v grep \noracle 639 1 0 13:31 ? 00:00:00 ora_pmon_DBIT121\n\n$ kill -9 639 \n\nalert.log \n... \n... \nPhysical Standby Database mounted. \nLost write protection mode set to \"typical\" \nCompleted: ALTER DATABASE MOUNT \/* db agent *\/\/* {0:33:25} *\/ \nALTER DATABASE OPEN \/* db agent *\/\/* {0:33:25} *\/ \nData Guard Broker initializing... \n... \n\nPhysical standby database opened for read only access. \nCompleted: ALTER DATABASE OPEN \/* db agent *\/\/* {0:33:25} *\/ \n\n... \n\nSQL&gt; select open_mode from v$database; \n\nOPEN_MODE \n-------------------- \nREAD ONLY WITH APPLY<\/pre>\n<p>After killing the PMON, the instance dies and the Cluster takes over which is very good. However, the cluster is ignoring my startup options which I have configured beforehand. After upgrading GI and the Database to 12.1.0.2 with 2016 Oct PSU, I could not reproduce this issue anymore and I have a good solution for preventing Active Data Guard to be activated.<\/p>\n<p>But what happens if my Primary host dies and a Failover is initiated by the observer. Then I do have two cluster resources with Primary and startup option OPEN. Let&#8217;s simulate this scenario by doing a shutdown abort with srvctl.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">DGMGRL&gt; show configuration;\n\nConfiguration - DBIT121\n\n  Protection Mode: MaxAvailability\n  Members:\n  DBIT121_SITE1 - Primary database\n    DBIT121_SITE2 - (*) Physical standby database\n\nFast-Start Failover: ENABLED\n\nConfiguration Status:\nSUCCESS   (status updated 5 seconds ago)\n\n\n$ srvctl stop database -db DBIT121_SITE1 -stopoption ABORT<\/pre>\n<p>&nbsp;<\/p>\n<p>After 30 seconds, the observer initiated a fast start failover, and the new primary is now on SITE2.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">Initiating Fast-Start Failover to database \"DBIT121_SITE2\"...\nPerforming failover NOW, please wait...\nFailover succeeded, new primary is \"DBIT121_SITE2\"<\/pre>\n<p>On SITE1 I still have the old Primary with Startup option OPEN. Not an issue at the moment, because it is a Primary and on a Primary there is no Active Data Guard. After I start up SITE1, a few moments later the reinstate takes place. Therefore, the database has to be brought again into the MOUNT state to do a &#8220;FLASHBACK DATABASE&#8221;.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ srvctl start database -db DBIT121_SITE1\n\nobserver.log\n...\nInitiating reinstatement for database \"DBIT121_SITE1\"...\nReinstating database \"DBIT121_SITE1\", please wait...\nReinstatement of database \"DBIT121_SITE1\" succeeded\n\nbroker.log on old Primary\n...\nData Guard notifying Oracle Clusterware to prepare database for role change\nDatabase Reinstate needs instance count to be reduced to 1\nFlashback SCN is 22408550; DB checkpoint SCN is 22405622. Flashback to SCN 22408550.\n01\/28\/2017 10:59:25\nPhysical Standby Reinstatement: Converting old primary to a physical standby\n01\/28\/2017 10:59:34\nConversion to physical standby database succeeded\nInstance restart not required\nPurging diverged redos on resetlogs branch 933516912, starting SCN 22408551\nPurged 0 archived logs\nTarget standby DBIT121_SITE2 did not have Active Data Guard enabled at the time of failover.\nTo maintain Active Data Guard license compliance Block Change Tracking will be disabled.\n01\/28\/2017 10:59:42\nNotifying Oracle Clusterware to buildup after database reinstatement<\/pre>\n<p>The broker knows that Active DataGuard was not enabled beforehand, an so it does not enable it now.<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">$ crsctl stat res ora.DBIT121_SITE1.db -p | egrep '(USR_ORA_OPEN_MODE|ROLE)'\nROLE=PHYSICAL_STANDBY\nUSR_ORA_OPEN_MODE=mount\n\n\nSQL&gt; select open_mode from v$database;\n\nOPEN_MODE\n--------------------\nMOUNTED<\/pre>\n<p>That&#8217;s it. This is my way to prevent Active Data Guard from being activated. \ud83d\ude42<\/p>\n<h3>Conclusion<\/h3>\n<p>Using cluster resources to prevent Active Data Guard from being activated is a fully supported way. You only need to take care that you are on GI\/DB and Observer version 12.1.0.2 2016 Oct PSU or higher. Before that patchlevel, it never worked for me correctly with cluster resources. Besides that, use only Broker and the cluster srvctl commands to manage your Data Guard environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By William Sescu There are some articles floating around how to prevent a license violation with Active Data Guard. Some of them related to an underscore parameter &#8220;_query_on_physical&#8221; and some of them related to a startup trigger. Both of them have advantages and disadvantages. E.g. regarding the &#8220;_query_on_physical&#8221; I can&#8217;t find any MOS Note about [&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":[59],"tags":[221,209],"type_dbi":[],"class_list":["post-9737","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-data-guard","tag-oracle-12c"],"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 12c - How to Prevent License Violation with Active Data Guard - 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-12c-how-to-prevent-license-violation-with-active-data-guard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 12c - How to Prevent License Violation with Active Data Guard\" \/>\n<meta property=\"og:description\" content=\"By William Sescu There are some articles floating around how to prevent a license violation with Active Data Guard. Some of them related to an underscore parameter &#8220;_query_on_physical&#8221; and some of them related to a startup trigger. Both of them have advantages and disadvantages. E.g. regarding the &#8220;_query_on_physical&#8221; I can&#8217;t find any MOS Note about [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-28T10:00:24+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\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle 12c &#8211; How to Prevent License Violation with Active Data Guard\",\"datePublished\":\"2017-01-28T10:00:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\"},\"wordCount\":877,\"commentCount\":0,\"keywords\":[\"Data Guard\",\"Oracle 12c\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\",\"name\":\"Oracle 12c - How to Prevent License Violation with Active Data Guard - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-01-28T10:00:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 12c &#8211; How to Prevent License Violation with Active Data Guard\"}]},{\"@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":"Oracle 12c - How to Prevent License Violation with Active Data Guard - 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-12c-how-to-prevent-license-violation-with-active-data-guard\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 12c - How to Prevent License Violation with Active Data Guard","og_description":"By William Sescu There are some articles floating around how to prevent a license violation with Active Data Guard. Some of them related to an underscore parameter &#8220;_query_on_physical&#8221; and some of them related to a startup trigger. Both of them have advantages and disadvantages. E.g. regarding the &#8220;_query_on_physical&#8221; I can&#8217;t find any MOS Note about [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/","og_site_name":"dbi Blog","article_published_time":"2017-01-28T10:00:24+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\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle 12c &#8211; How to Prevent License Violation with Active Data Guard","datePublished":"2017-01-28T10:00:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/"},"wordCount":877,"commentCount":0,"keywords":["Data Guard","Oracle 12c"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/","name":"Oracle 12c - How to Prevent License Violation with Active Data Guard - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-01-28T10:00:24+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12c-how-to-prevent-license-violation-with-active-data-guard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 12c &#8211; How to Prevent License Violation with Active Data Guard"}]},{"@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\/9737","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=9737"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9737\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9737"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}