{"id":10167,"date":"2017-05-29T19:36:49","date_gmt":"2017-05-29T17:36:49","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/"},"modified":"2017-05-29T19:36:49","modified_gmt":"2017-05-29T17:36:49","slug":"oracle-12cr2-exchange-partition-deferred-invalidation","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/","title":{"rendered":"Oracle 12cR2: exchange partition deferred invalidation"},"content":{"rendered":"<h2>By Franck Pachot<\/h2>\n<p>.<br \/>\nIn a <a href=\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-ddl-deferred-invalidation\/\" target=\"_blank\" rel=\"noopener noreferrer\">previous post<\/a> I introduced the new 12<em>c<\/em>R2 feature where some DDL operations can use the same rolling invalidation than what is done with dbms_stats. On tables, DDL deferred invalidation is available only for operations on partitions. Here is how it works for partition exchange.<br \/>\n<!--more--><br \/>\nHere is my session environment:<\/p>\n<pre><code>\nSQL&gt; whenever sqlerror exit failure\nSQL&gt; alter session set nls_date_format='hh24:mi:ss';\nSession altered.\nSQL&gt; alter session set session_cached_cursors=0;\nSession altered.\nSQL&gt; alter session set optimizer_dynamic_sampling=0;\nSession altered.\nSQL&gt; alter system set \"_optimizer_invalidation_period\"=5;\nSystem SET altered.\nSQL&gt; show user\nUSER is \"DEMO\"\n<\/code><\/pre>\n<p>I create a partitioned table with one local index<\/p>\n<pre><code>\nSQL&gt; create table DEMO (n number, p number) partition by list(p) (partition P1 values(1), partition P2 values(2));\nTable DEMO created.\nSQL&gt; create index DEMO on DEMO(n) local;\nIndex DEMO created.\n<\/code><\/pre>\n<p>I create the table with same structure for exchange<\/p>\n<pre><code>\nSQL&gt; create table DEMOX for exchange with table DEMO;\nTable DEMOX created.\nSQL&gt; create index DEMOX on DEMOX(n);\nIndex DEMOX created.\n<\/code><\/pre>\n<p>The CREATE TABLE FOR EXCHANGE do not create the indexes, but for rolling invalidation we need them. Without the same indexes, immediate invalidation occurs.<\/p>\n<p>In order observe invalidation, I run queries on the partitioned tables, involving or not the partition I&#8217;ll exchange. I also run a query on the table used for exchange.<\/p>\n<pre><code>\nSQL&gt; SELECT * FROM DEMO partition (P1);\nno rows selected\nSQL&gt; SELECT * FROM DEMO partition (P2);\nno rows selected\nSQL&gt; SELECT * FROM DEMO;\nno rows selected\nSQL&gt; SELECT * FROM DEMOX;\nno rows selected\n<\/code><\/pre>\n<p>Here are the cursors and some execution plans:<\/p>\n<pre><code>\nSQL&gt; select sql_id,sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;\n&nbsp;\nSQL_ID         SQL_TEXT                           CHILD_NUMBER  INVALIDATIONS  LOADS  PARSE_CALLS  EXECUTIONS  FIRST_LOAD_TIME      LAST_LOAD_TIME       LAST_ACTIVE_TIME  IS_ROLLING_INVALID  \n------         --------                           ------------  -------------  -----  -----------  ----------  ---------------      --------------       ----------------  ------------------  \ndd3ajp6k49u1d  SELECT * FROM DEMO                 0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\n1ft329rx910sa  SELECT * FROM DEMO partition (P1)  0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\n9pp3h276waqvm  SELECT * FROM DEMO partition (P2)  0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\nby2m6mh16tpsz  SELECT * FROM DEMOX                0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\n&nbsp;\nSQL&gt; select * from table(dbms_xplan.display_cursor('1ft329rx910sa',0,'basic +partition'));\n&nbsp;\nPLAN_TABLE_OUTPUT                                       \n-----------------                                       \nEXPLAINED SQL STATEMENT:\n------------------------\nSELECT * FROM DEMO partition (P1)\n&nbsp;\nPlan hash value: 3520634703\n&nbsp;\n------------------------------------------------------\n| Id  | Operation             | Name | Pstart| Pstop |\n------------------------------------------------------\n|   0 | SELECT STATEMENT      |      |       |       |\n|   1 |  PARTITION LIST SINGLE|      |     1 |     1 |\n|   2 |   TABLE ACCESS FULL   | DEMO |     1 |     1 |\n------------------------------------------------------\n&nbsp;\nSQL&gt; select * from table(dbms_xplan.display_cursor('dd3ajp6k49u1d',0,'basic +partition'));\n&nbsp;\nPLAN_TABLE_OUTPUT                                    \n-----------------                                    \nEXPLAINED SQL STATEMENT:\n------------------------\nSELECT * FROM DEMO\n&nbsp;\nPlan hash value: 1180220521\n&nbsp;\n---------------------------------------------------\n| Id  | Operation          | Name | Pstart| Pstop |\n---------------------------------------------------\n|   0 | SELECT STATEMENT   |      |       |       |\n|   1 |  PARTITION LIST ALL|      |     1 |     2 |\n|   2 |   TABLE ACCESS FULL| DEMO |     1 |     2 |\n---------------------------------------------------\n<\/code><\/pre>\n<p>I exchange the partition P1 with the table DEMOX. I include indexes and add the DEFERRED INVALIDATION clause<\/p>\n<pre><code>\nSQL&gt; alter table DEMO exchange partition P1 with table DEMOX including indexes without validation deferred invalidation;\nTable DEMO altered.\n<\/code><\/pre>\n<p>If I do the same without the DEFERRED INVALIDATION clause, or without including indexes, or having different indexes, then I would see all cursors invalidated. Here only the select on the DEMOX table is invalidated:<\/p>\n<pre><code>\nSQL&gt; select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;\n&nbsp;\nSQL_TEXT                           CHILD_NUMBER  INVALIDATIONS  LOADS  PARSE_CALLS  EXECUTIONS  FIRST_LOAD_TIME      LAST_LOAD_TIME       LAST_ACTIVE_TIME  IS_ROLLING_INVALID  \n--------                           ------------  -------------  -----  -----------  ----------  ---------------      --------------       ----------------  ------------------  \nSELECT * FROM DEMO                 0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\nSELECT * FROM DEMO partition (P1)  0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\nSELECT * FROM DEMO partition (P2)  0             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\nSELECT * FROM DEMOX                0             1              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:12          N\n<\/code><\/pre>\n<p>I expected to see the IS_ROLLING_INVALID flag changed to &#8216;Y&#8217; as we can observe with other operations. I have opened an SR for that. <\/p>\n<p>Rolling invalidation sets a timestamp at next execution:<\/p>\n<pre><code>\nSQL&gt; SELECT * FROM DEMO partition (P1);\nno rows selected\nSQL&gt; SELECT * FROM DEMO partition (P2);\nno rows selected\nSQL&gt; SELECT * FROM DEMO;\nno rows selected\nSQL&gt; SELECT * FROM DEMOX;\nno rows selected\n&nbsp;\n&nbsp;\nSQL&gt; select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;\n&nbsp;\nSQL_TEXT                           CHILD_NUMBER  INVALIDATIONS  LOADS  PARSE_CALLS  EXECUTIONS  FIRST_LOAD_TIME      LAST_LOAD_TIME       LAST_ACTIVE_TIME  IS_ROLLING_INVALID  \n--------                           ------------  -------------  -----  -----------  ----------  ---------------      --------------       ----------------  ------------------  \nSELECT * FROM DEMO                 0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMO partition (P1)  0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMO partition (P2)  0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMOX                0             1              2      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:14  10:06:14          N\n<\/code><\/pre>\n<p>I expected to see IS_ROLLING_INVALID going from &#8216;Y&#8217; to &#8216;X&#8217; here when the random time is set for invalidation.<\/p>\n<p>By default, the random time is set within a 5 hours window, but I changed &#8220;_optimizer_invalidation_period&#8221; to 5 seconds instead and I wait for this time window to be sure that invalidation occurs. And then run my queries again.<\/p>\n<pre><code>\nSQL&gt; host sleep 5\n&nbsp;\nSQL&gt; SELECT * FROM DEMO partition (P1);\nno rows selected\nSQL&gt; SELECT * FROM DEMO partition (P2);\nno rows selected\nSQL&gt; SELECT * FROM DEMO;\nno rows selected\nSQL&gt; SELECT * FROM DEMOX;\nno rows selected\n&nbsp;\n<\/code><\/pre>\n<p>Here are the new child cursors created for the ones that were marked for rolling invalidation. The IS_ROLLING_INVALID did not display anything, but it seems that it works as expected:<\/p>\n<pre><code>\nSQL&gt; select sql_text,child_number,invalidations,loads,parse_calls,executions,first_load_time,last_load_time,last_active_time,is_rolling_invalid from v$sql where sql_text like 'S%DEMO%' order by sql_text;\n&nbsp;\nSQL_TEXT                           CHILD_NUMBER  INVALIDATIONS  LOADS  PARSE_CALLS  EXECUTIONS  FIRST_LOAD_TIME      LAST_LOAD_TIME       LAST_ACTIVE_TIME  IS_ROLLING_INVALID  \n--------                           ------------  -------------  -----  -----------  ----------  ---------------      --------------       ----------------  ------------------  \nSELECT * FROM DEMO                 0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMO                 1             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:19  10:06:19          N\nSELECT * FROM DEMO partition (P1)  1             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:19  10:06:19          N\nSELECT * FROM DEMO partition (P1)  0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMO partition (P2)  1             0              1      1            1           2017-05-26\/10:06:12  2017-05-26\/10:06:19  10:06:19          N\nSELECT * FROM DEMO partition (P2)  0             0              1      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:12  10:06:14          N\nSELECT * FROM DEMOX                0             1              2      2            2           2017-05-26\/10:06:12  2017-05-26\/10:06:14  10:06:19          N\n<\/code><\/pre>\n<p>Here is the confirmation that those 3 cursors were not shared because they have passed the rolling invalidation window:<\/p>\n<pre><code>\nSQL&gt; select sql_id,child_number,reason from v$sql_shared_cursor join v$sql using(sql_id, child_number) where sql_text like 'S%DEMO%';\n&nbsp;\nSQL_ID         CHILD_NUMBER  REASON\n------         ------------  ------\n1ft329rx910sa  0             033Rolling Invalidate Window Exceeded(3)2x414957859751495785979\n1ft329rx910sa  1\nby2m6mh16tpsz  0\ndd3ajp6k49u1d  0             033Rolling Invalidate Window Exceeded(3)2x414957859771495785979\ndd3ajp6k49u1d  1\n9pp3h276waqvm  0             033Rolling Invalidate Window Exceeded(3)2x414957859781495785979\n9pp3h276waqvm  1\n<\/code><\/pre>\n<h3>So what?<\/h3>\n<p>The first observation is that deferred invalidation works with partition exchange, despite the fact that the V$SQL.IS_ROLLING_INVALID flag is not updated. I was surprised to see that rolling invalidation occurs even for the cursors accessing to the partition which was exchanged. However, the rolling invalidation occurs only if the indexes are the same. If we do not exchange the indexes, then all cursors are invalidated immediately. This means that probably the cursor parsed is compatible to run after the exchange as the indexes are guaranteed to have same structure, type, compression,&#8230;<br \/>\nThis is a very nice feature when exchange partition is used to keep the fact table when loading new data: you load into a table and then exchange it with the latest partition. The new values are now exposed immediately and this new feature avoids a hard parse peak.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Franck Pachot . In a previous post I introduced the new 12cR2 feature where some DDL operations can use the same rolling invalidation than what is done with dbms_stats. On tables, DDL deferred invalidation is available only for operations on partitions. Here is how it works for partition exchange.<\/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],"tags":[906,96],"type_dbi":[],"class_list":["post-10167","post","type-post","status-publish","format-standard","hentry","category-database-management","tag-invalidation","tag-oracle"],"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 12cR2: exchange partition deferred invalidation - 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-12cr2-exchange-partition-deferred-invalidation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle 12cR2: exchange partition deferred invalidation\" \/>\n<meta property=\"og:description\" content=\"By Franck Pachot . In a previous post I introduced the new 12cR2 feature where some DDL operations can use the same rolling invalidation than what is done with dbms_stats. On tables, DDL deferred invalidation is available only for operations on partitions. Here is how it works for partition exchange.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-29T17:36:49+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-12cr2-exchange-partition-deferred-invalidation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle 12cR2: exchange partition deferred invalidation\",\"datePublished\":\"2017-05-29T17:36:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\"},\"wordCount\":484,\"commentCount\":0,\"keywords\":[\"invalidation\",\"Oracle\"],\"articleSection\":[\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\",\"name\":\"Oracle 12cR2: exchange partition deferred invalidation - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-05-29T17:36:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle 12cR2: exchange partition deferred invalidation\"}]},{\"@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 12cR2: exchange partition deferred invalidation - 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-12cr2-exchange-partition-deferred-invalidation\/","og_locale":"en_US","og_type":"article","og_title":"Oracle 12cR2: exchange partition deferred invalidation","og_description":"By Franck Pachot . In a previous post I introduced the new 12cR2 feature where some DDL operations can use the same rolling invalidation than what is done with dbms_stats. On tables, DDL deferred invalidation is available only for operations on partitions. Here is how it works for partition exchange.","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/","og_site_name":"dbi Blog","article_published_time":"2017-05-29T17:36:49+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-12cr2-exchange-partition-deferred-invalidation\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle 12cR2: exchange partition deferred invalidation","datePublished":"2017-05-29T17:36:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/"},"wordCount":484,"commentCount":0,"keywords":["invalidation","Oracle"],"articleSection":["Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/","name":"Oracle 12cR2: exchange partition deferred invalidation - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-05-29T17:36:49+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-12cr2-exchange-partition-deferred-invalidation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle 12cR2: exchange partition deferred invalidation"}]},{"@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\/10167","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=10167"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10167\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10167"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}