{"id":4384,"date":"2015-02-21T20:15:52","date_gmt":"2015-02-21T19:15:52","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/"},"modified":"2015-02-21T20:15:52","modified_gmt":"2015-02-21T19:15:52","slug":"12c-online-statistics-gathering-and-startup-restrict","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/","title":{"rendered":"12c online statistics gathering and startup restrict"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nI&#8217;ve written about 12c online statistics gathering in a UKOUG OracleScene <a href=\"http:\/\/viewer.zmags.com\/publication\/07edc028#\/07edc028\/46\">article<\/a>. My opinion is clear about it: you sill need to gather stale stats afterwards or you have mising, stale and inconsistent object statistics. This post is about cases where online statistics gathering does not occur (and are not documented) &#8211; which is another reason why we can&#8217;t rely on it.<\/p>\n<h3>The case where it works<\/h3>\n<p>You can check on the article about how online gathering statistics works (or come to our <a href=\"index.php\/products\/dbi-insite-workshops\/oracle-12c-new-features-workshop\">12c new feature workshop<\/a> where we cover and practice all 12c optimizer new features)<br \/>\nIn order to do something else here I&#8217;m showing how to trace it by activating the 0x10000 trace flag for dbms_stats:<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/localhost\/PDB1\nConnected.\nSQL&gt; set serveroutput on\nSQL&gt; exec dbms_stats.set_global_prefs('TRACE',1+65536);\nPL\/SQL procedure successfully completed.\n\nSQL&gt; drop table DEMO;\nTable dropped.\n\nSQL&gt; create table DEMO ( n number ) pctfree 99;\nTable created.\n\nSQL&gt; insert \/*+ append *\/ into DEMO select rownum from dual connect by 1000&gt;=level;\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 1         1         1         to_char(count(\"N\"))                        100\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 2         1         1         substrb(dump(min(\"N\"),16,0,64),1,240)      9\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 3         1         1         substrb(dump(max(\"N\"),16,0,64),1,240)      17\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 1         1         1         to_char(count(\"N\"))                        100\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 2         1         1         substrb(dump(min(\"N\"),16,0,64),1,240)      9\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 3         1         1         substrb(dump(max(\"N\"),16,0,64),1,240)      17\nDBMS_STATS: postprocess online optimizer stats gathering for DEMO.DEMO: save statis\nDBMS_STATS: RAWIDX    SELMAPPOS RES                            NNV       NDV       \nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 1         1          1000      1000      0         2891      1000\nDBMS_STATS: RAWIDX    SELMAPPOS RES                            NNV       NDV       \nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 2         2         Typ=2 Len=2: c1,2              NULL      NULL      \nDBMS_STATS: RAWIDX    SELMAPPOS RES                            NNV       NDV       \nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 3         3         Typ=2 Len=2: c2,b              NULL      NULL      \nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 1         1         1         to_char(count(\"N\"))                        100\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 2         1         1         substrb(dump(min(\"N\"),16,0,64),1,240)      9\nDBMS_STATS: SELMAPPOS CLISTIDX  INTCOL    SELITEM                                    GATHFLG\nDBMS_STATS: ------------------------------------------------------------------------\nDBMS_STATS: 3         1         1         substrb(dump(max(\"N\"),16,0,64),1,240)      17\n\n1000 rows created.\n\n<\/code><\/pre>\n<p>From the trace, online statistics gathering occured for that direct-path load.<br \/>\nWe can see it also in the execution plan:<\/p>\n<pre><code>SQL&gt; select * from table(dbms_xplan.display_cursor('1k2r9n41c7xba'));\n\nPLAN_TABLE_OUTPUT\n---------------------------------------------------------------------------------\nSQL_ID  1k2r9n41c7xba, child number 0\n-------------------------------------\ninsert \/*+ append *\/ into DEMO select rownum from dual connect by 1000&gt;=level\n\nPlan hash value: 1600317434\n\n---------------------------------------------------------------------------------\n| Id  | Operation                        | Name | Rows  | Cost (%CPU)| Time     |\n---------------------------------------------------------------------------------\n|   0 | INSERT STATEMENT                 |      |       |     2 (100)|          |\n|   1 |  LOAD AS SELECT                  |      |       |            |          |\n|   2 |   OPTIMIZER STATISTICS GATHERING |      |     1 |     2   (0)| 00:00:01 |\n|   3 |    COUNT                         |      |       |            |          |\n|   4 |     CONNECT BY WITHOUT FILTERING |      |       |            |          |\n|   5 |      FAST DUAL                   |      |     1 |     2   (0)| 00:00:01 |\n---------------------------------------------------------------------------------\n<\/code><\/pre>\n<p>and statistics are there:<\/p>\n<pre><code>SQL&gt; select last_analyzed,num_rows,blocks from user_tables where table_name='DEMO';\n\nLAST_ANAL   NUM_ROWS     BLOCKS\n--------- ---------- ----------\n21-FEB-15       1000        179\n<\/code><\/pre>\n<p>Don&#8217;t forget to set the trace off:<\/p>\n<pre><code>SQL&gt; exec dbms_stats.set_global_prefs('TRACE',0);\nPL\/SQL procedure successfully completed.\n<\/code><\/pre>\n<p>Ok. That is the known case. Table statistics are there.<\/p>\n<h3>startup restrict<\/h3>\n<p>When you want to do some online maintenance, being sure that the application is not connected, you start the database in restrict mode.<\/p>\n<pre><code>SQL&gt; alter system enable restricted session;\nSystem altered.\n<\/code><\/pre>\n<p>Then you can do you imports, reorg, bulk load, etc. and be sure that nobody will write or read into the table you are working on. Imagine you have tested the previous load and you have observed that the online gathered statistics are sufficient. Now you run the same in production in restricted mode.<\/p>\n<pre><code>SQL&gt; connect demo\/demo@\/\/localhost\/PDB1\nConnected.\nSQL&gt; set serveroutput on\nSQL&gt; exec dbms_stats.set_global_prefs('TRACE',1+65536);\nPL\/SQL procedure successfully completed.\n\nSQL&gt; drop table DEMO;\nTable dropped.\n\nSQL&gt; create table DEMO ( n number ) pctfree 99;\nTable created.\n\nSQL&gt; insert \/*+ append *\/ into DEMO select rownum from dual connect by 1000&gt;=level;\n1000 rows created.\n<\/code><\/pre>\n<p>No trace related to online statistics gathering.<\/p>\n<pre><code>SQL&gt; select * from table(dbms_xplan.display_cursor('1k2r9n41c7xba'));\n\nPLAN_TABLE_OUTPUT\n-------------------------------------------------------------------------------\nSQL_ID  1k2r9n41c7xba, child number 0\n-------------------------------------\ninsert \/*+ append *\/ into DEMO select rownum from dual connect by 1000&gt;=level\n\nPlan hash value: 1600317434\n\n-------------------------------------------------------------------------------\n| Id  | Operation                      | Name | Rows  | Cost (%CPU)| Time     |\n-------------------------------------------------------------------------------\n|   0 | INSERT STATEMENT               |      |       |     2 (100)|          |\n|   1 |  LOAD AS SELECT                |      |       |            |          |\n|   2 |   COUNT                        |      |       |            |          |\n|   3 |    CONNECT BY WITHOUT FILTERING|      |       |            |          |\n|   4 |     FAST DUAL                  |      |     1 |     2   (0)| 00:00:01 |\n-------------------------------------------------------------------------------\n<\/code><\/pre>\n<p>no STATISTICS GATHERING operation.<\/p>\n<pre><code>SQL&gt; select last_analyzed,num_rows,blocks from user_tables where table_name='DEMO';\n\nLAST_ANAL   NUM_ROWS     BLOCKS\n--------- ---------- ----------\n\n<\/code><\/pre>\n<p>and no statistics.<\/p>\n<h3>10053 trace<\/h3>\n<p>Because we can&#8217;t see the STATISTICS GATHERING operation in the execution plan, I know that it&#8217;s an optimizer decision done at compilation time. I&#8217;ve dump the 10053 trace and got the following line:<\/p>\n<pre><code>ONLINEST: Checking validity of online stats gathering\nONLINEST: Failed validity check: database not open, in restricted\/migrate mode, suspended, readonly, instance not open or OCI not available.\n<\/code><\/pre>\n<p>So we have a few reasons where online statistics does not occur and that are not documented as <a href=\"https:\/\/docs.oracle.com\/database\/121\/TGSQL\/tgsql_statscon.htm#TGSQL344\">Restrictions for Online Statistics Gathering for Bulk Loads<\/a>and restricted mode is one of them.<\/p>\n<h3>Thin JDBC<\/h3>\n<p>Because the preceding line mentions OCI I wanted to be sure that online statistics gathering occurs even when connected though thin jdbc, and I used the sqlcl beta from SQL Developer 4.1 Early Adopter. Note that I&#8217;m not in restricted session anymore.<\/p>\n<pre><code>sql.bat demo\/demo@\/\/192.168.78.113\/pdb1\n\nSQLcl: Release 4.1.0 Beta on Sat Feb 21 21:10:59 2015\n\nCopyright (c) 1982, 2015, Oracle.  All rights reserved.\n\nConnected to:\nOracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production\n\nSQL&gt; show jdbc\n-- Database Info --\nDatabase Product Name: Oracle\nDatabase Product Version: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production\nWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options\nDatabase Major Version: 12\nDatabase Minor Version: 1\n-- Driver Info --\nDriver Name: Oracle JDBC driver\nDriver Version: 12.1.0.2.0\nDriver Major Version: 12\nDriver Minor Version: 1\nDriver URL: jdbc:oracle:thin:@\/\/192.168.78.113\/pdb1\n\nSQL&gt; create table DEMO ( n number ) pctfree 99;\n\nTable DEMO created.\n\nSQL&gt; insert \/*+ append *\/ into DEMO select rownum from dual connect by level select last_analyzed,num_rows,blocks from user_tables where table_name='DEMO';\n\nLAST_ANALYZED                 NUM_ROWS     BLOCKS\n--------------------------- ---------- ----------\n21.02.15                          1000        100\n<\/code><\/pre>\n<p>Ok. no problem. I don&#8217;t know what that &#8216;OCI not available&#8217; is but it works even though JDBC Thin.<\/p>\n<h3>Conclusion<\/h3>\n<p>As I already said for other reasons, don&#8217;t rely on online statistics gathering and always gather stale stats afterwards. It&#8217;s good to have it as it saves some work to do by dbms_stats later. There are cases where it is better than no statistics (when combined with GTT private statistics for example) but don&#8217;t rely on it. but don&#8217;t rely on it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . I&#8217;ve written about 12c online statistics gathering in a UKOUG OracleScene article. My opinion is clear about it: you sill need to gather stale stats afterwards or you have mising, stale and inconsistent object statistics. This post is about cases where online statistics gathering does not occur (and are not documented) [&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":[209],"type_dbi":[],"class_list":["post-4384","post","type-post","status-publish","format-standard","hentry","category-database-management","category-oracle","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>12c online statistics gathering and startup restrict - dbi Blog<\/title>\n<meta name=\"description\" content=\"No online statistics gathering in restricted\/migrate mode\" \/>\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\/12c-online-statistics-gathering-and-startup-restrict\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"12c online statistics gathering and startup restrict\" \/>\n<meta property=\"og:description\" content=\"No online statistics gathering in restricted\/migrate mode\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-02-21T19:15:52+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=\"6 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\/12c-online-statistics-gathering-and-startup-restrict\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"12c online statistics gathering and startup restrict\",\"datePublished\":\"2015-02-21T19:15:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\"},\"wordCount\":467,\"commentCount\":0,\"keywords\":[\"Oracle 12c\"],\"articleSection\":[\"Database management\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\",\"name\":\"12c online statistics gathering and startup restrict - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2015-02-21T19:15:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"No online statistics gathering in restricted\/migrate mode\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"12c online statistics gathering and startup restrict\"}]},{\"@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":"12c online statistics gathering and startup restrict - dbi Blog","description":"No online statistics gathering in restricted\/migrate mode","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\/12c-online-statistics-gathering-and-startup-restrict\/","og_locale":"en_US","og_type":"article","og_title":"12c online statistics gathering and startup restrict","og_description":"No online statistics gathering in restricted\/migrate mode","og_url":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/","og_site_name":"dbi Blog","article_published_time":"2015-02-21T19:15:52+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"12c online statistics gathering and startup restrict","datePublished":"2015-02-21T19:15:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/"},"wordCount":467,"commentCount":0,"keywords":["Oracle 12c"],"articleSection":["Database management","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/","url":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/","name":"12c online statistics gathering and startup restrict - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2015-02-21T19:15:52+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"No online statistics gathering in restricted\/migrate mode","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/12c-online-statistics-gathering-and-startup-restrict\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"12c online statistics gathering and startup restrict"}]},{"@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\/4384","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=4384"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4384\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=4384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=4384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=4384"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=4384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}