{"id":20033,"date":"2022-10-21T13:22:27","date_gmt":"2022-10-21T11:22:27","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=20033"},"modified":"2022-10-21T13:24:00","modified_gmt":"2022-10-21T11:24:00","slug":"oracle-exchange-partition","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/","title":{"rendered":"Oracle Exchange Partition"},"content":{"rendered":"\n<p>The Oracle Exchange Partition is a method allowing to :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>exchange the data segments from a non partitioned table to a partitioned table <\/li><li>exchange the data segments from a partitioned table to a non partitioned table.<\/li><\/ul>\n\n\n\n<p>This method is useful because:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>You can get data quickly in or out of partitioned table<\/li><li>You can convert non partitioned table to a partitioned table or vice versa.<\/li><\/ul>\n\n\n\n<p>Let&#8217;s see how it works:<\/p>\n\n\n\n<p>First of all, let&#8217;s create a dimension table (reference table which contains region id) and a non partitioned table with 10 million of rows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--Table HR.DIM1 : My Dimension Table\nSQL&gt; desc hr.dim1\n Name                                      Null?    Type\n ----------------------------------------- -------- ----------------------------\n ID                                        NOT NULL NUMBER(10)\n REGION                                             VARCHAR2(50)\n\nSQL&gt; select * from hr.dim1;\n\n        ID REGION\n---------- --------------------------------------------------\n         1 EUROPE\n         2 AFRICA\n         3 ASIA\n         4 OCEANIA\n         5 AMERICA\n\nSQL&gt;\n\n--Table HR.MYTABLE: Contains data by region, my future table partitioned\nSQL&gt; desc hr.MYTABLE\n Name                                      Null?    Type\n ----------------------------------------- -------- ----------------------------\n ID                                                 NUMBER(10)\n CREATED_DATE                                       DATE\n REGION_ID                                          NUMBER(10)\n DATA                                               VARCHAR2(50)\n\nSQL&gt;\n\n--I populate my table HR.MYTABLE with 100 millions of rows\nSQL&gt; DECLARE\n  l_region_id    hr.dim1.id%TYPE;\n  l_create_date  DATE;\nBEGIN\n  FOR i IN 1 .. 10000000 LOOP\n    IF MOD(i, 3) = 0 THEN\n      l_create_date := ADD_MONTHS(SYSDATE, -24);\n      l_region_id   := 2;\n    ELSIF MOD(i, 2) = 0 THEN\n      l_create_date := ADD_MONTHS(SYSDATE, -12);\n      l_region_id   := 1;\n    ELSE\n      l_create_date := SYSDATE;\n      l_region_id   := 3;\n    END IF;\n\n    INSERT INTO HR.MYTABLE (id, created_date, region_id, data)\n    VALUES (i, l_create_date, l_region_id, 'Data for Region ' || i);\n  END LOOP;\n  COMMIT;\nEND;\n 22  \/\n\nPL\/SQL procedure successfully completed.\n\nSQL&gt; select count(*) from HR.MYTABLE;\n\n  COUNT(*)\n----------\n  10000000\n\nSQL&gt; exec dbms_stats.gather_table_stats('HR','MYTABLE');\n\nPL\/SQL procedure successfully completed.\n\nSQL&gt; exec dbms_stats.gather_table_stats('HR','DIM1');\n\n<\/code><\/pre>\n\n\n\n<p>Some constraints are created :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A Primary Key on the column MYTABLE.ID<\/li><li>Two Indexes on the columns MYTABLE.CREATED_DATE and MYTABLE.REGION_ID<\/li><li>A Foreign Key on the column MYTABLE.REGION_ID referencing the column DIM1.ID<\/li><\/ul>\n\n\n\n<p>One more precision, a foreign key column must always be indexed in order to avoid Full Table Lock.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER TABLE HR.MYTABLE ADD (\n  CONSTRAINT TABLE_NP_PK PRIMARY KEY (id));\n\nTable altered.\n\nSQL&gt; CREATE INDEX HR.TNP_created_date_i ON HR.MYTABLE(created_date);\n\nIndex created.\n\nSQL&gt; CREATE INDEX HR.TNP_region_fk_i ON HR.MYTABLE(region_id);\n\nIndex created.\n\n\nALTER TABLE HR.MYTABLE ADD (\n  CONSTRAINT TNP_region_fk\n  FOREIGN KEY (region_id)\n  REFERENCES hr.dim1(id)\n  5  );\n\nTable altered.\n\n<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s suppose we want to partition the table HR.MYTABLE.<\/p>\n\n\n\n<p>First of all, let&#8217;s create an empty table partitioned by RANGE : HR.TABLE_PART (yearly partition based on partition key &#8220;created_date&#8221;) with the same structure than HR.MYTABLE :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE HR.TABLE_PART (\n  id            NUMBER(10),\n  created_date  DATE,\n  region_id     NUMBER(10),\n  data          VARCHAR2(50)\n)\nPARTITION BY RANGE (created_date)\n(PARTITION TABLE_PART_2020 VALUES LESS THAN (MAXVALUE));\n\nTable created.\n\nALTER TABLE HR.TABLE_PART ADD (\n  CONSTRAINT TP_pk PRIMARY KEY (id)\n );\n\nTable altered.\n\nCREATE INDEX TP_created_date_i ON HR.TABLE_PART(created_date) LOCAL;\n\nIndex created.\n\nCREATE INDEX TP_created_date_i ON HR.TABLE_PART(created_date) LOCAL;\n\n\nSQL&gt; SQL&gt; CREATE INDEX TP_dim1_fk_i ON HR.TABLE_PART(region_id) LOCAL;\n\nIndex created.\n\nALTER TABLE HR.TABLE_PART ADD (\n  CONSTRAINT tp_dim1_fk\n  FOREIGN KEY (region_id)\n  REFERENCES hr.dim1(id)\n  5  );\n\nTable altered.\n\n<\/code><\/pre>\n\n\n\n<p>All the rows are between 10.2020 and 10.2022, the goal is to move data related to years 2020, 2021 and 2022 (table HR.MYTABLE) into their own year partition (table HR.TABLE_PART).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; select min(created_date) from hr.MYTABLE;\n\nMIN(CREATED_DATE)\n-------------------\n21.10.2020 07:37:58\n\nSQL&gt; select max(created_date) from hr.MYTABLE;\n\nMAX(CREATED_DATE)\n-------------------\n21.10.2022 07:40:36\n<\/code><\/pre>\n\n\n\n<p>Now let&#8217;s move the data segments with Oracle Exchange Partition:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; select count(*) from HR.TABLE_PART;\n\n  COUNT(*)\n----------\n         0\n\nALTER TABLE HR.TABLE_PART\nEXCHANGE PARTITION TABLE_PART_2020\nWITH TABLE HR.MYTABLE\nWITHOUT VALIDATION\nUPDATE GLOBAL INDEXES;\n\nTable altered.\n\nSQL&gt; select count(*) from HR.TABLE_PART;\n\n  COUNT(*)\n----------\n  10000000\n\n<\/code><\/pre>\n\n\n\n<p>All the rows have been moved to the partitioned table, so the non partitioned table (HR.MYTABLE) can be removed and the table partitioned + constraints and indexes renamed (HR.TABLE_PART &#8211;&gt; HR.MYTABLE):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--Drop table HR.MYTABLE\nSQL&gt; DROP TABLE HR.MYTABLE;\n\nTable dropped.\n\n--Rename Table HR.TABLE_PART TO HR.MYTABLE\nSQL&gt; sho user\nUSER is \"HR\"\nSQL&gt; RENAME TABLE_PART TO MYTABLE;\n\nTable renamed.\n\nSQL&gt;\n\n--RENAME CONSTRAINTS\nSQL&gt; ALTER TABLE HR.MYTABLE RENAME CONSTRAINT TP_PK TO TABLE_NP_PK;\n\nTable altered.\n\nSQL&gt; ALTER TABLE HR.MYTABLE RENAME CONSTRAINT TP_DIM1_FK TO TNP_REGION_FK;\n\nTable altered.\n\nSQL&gt;\n\n--RENAME INDEXES\nSQL&gt; ALTER INDEX TP_PK RENAME TO TABLE_NP_PK;\n\nIndex altered.\n\nSQL&gt; ALTER INDEX TP_DIM1_FK_I RENAME TO TNP_REGION_FK_I;\n\nIndex altered.\n\nSQL&gt; ALTER INDEX TP_CREATED_DATE_I RENAME TO TNP_CREATED_DATE_I;\n\nIndex altered.\n\n<\/code><\/pre>\n\n\n\n<p>Now I want to split all rows which are into 2020 PARTITION into their correct partition:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Rows with created_date in 2020 into PARTITION 2020<\/li><li>Rows with created_date in 2021 into PARTITION 2021<\/li><li>Rows with created_date in 2022 into PARTITION 2022<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>--Move all rows with created_date in 2021 into PARTITION 2021\nSQL&gt; set timing on\nALTER TABLE HR.MYTABLE\n  SPLIT PARTITION TABLE_PART_2020 AT (TO_DATE('31-DEC-2021 23:59:59', 'DD-MON-YYYY HH24:MI:SS'))\n  INTO (PARTITION TABLE_PART_2021,\n        PARTITION TABLE_PART_2020)\nUPDATE GLOBAL INDEXES;\n\nTable altered.\n\nElapsed: 00:01:58.67\n\n--Move all rows with created_date in 2022 into PARTITION 2022\nALTER TABLE HR.MYTABLE\n  SPLIT PARTITION TABLE_PART_2020 AT (TO_DATE('31-DEC-2022 23:59:59', 'DD-MON-YYYY HH24:MI:SS'))\n  INTO (PARTITION TABLE_PART_2022,\n        PARTITION TABLE_PART_2020)\n  5    UPDATE GLOBAL INDEXES;\n\nTable altered.\n\nElapsed: 00:00:00.66\n\n\nSQL&gt; EXEC DBMS_STATS.gather_table_stats('HR', 'mytable', cascade =&gt; TRUE);\n\nPL\/SQL procedure successfully completed.\n\nElapsed: 00:00:10.49\n<\/code><\/pre>\n\n\n\n<p>Now, let&#8217;s check if the data are created into the correct partition:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--For 2020\nSQL&gt; select count(*) from hr.mytable partition(TABLE_PART_2020);\n\n  COUNT(*)\n----------\n   3333333\n\nElapsed: 00:00:00.04\nSQL&gt;   select min(created_date) from hr.mytable partition(TABLE_PART_2020);\n\nMIN(CREATED_DATE)\n-------------------\n21.10.2020 07:37:58\n\nElapsed: 00:00:00.08\nSQL&gt;   select max(created_date) from hr.mytable partition(TABLE_PART_2020);\n\nMAX(CREATED_DATE)\n-------------------\n21.10.2020 07:40:36\n\nElapsed: 00:00:00.09\n\n--For 2021\nSQL&gt; select count(*) from hr.mytable partition(TABLE_PART_2021);\n\n  COUNT(*)\n----------\n   3333334\n\nElapsed: 00:00:00.04\nSQL&gt;   select min(created_date) from hr.mytable partition(TABLE_PART_2021);\n\nMIN(CREATED_DATE)\n-------------------\n21.10.2021 07:37:58\n\nElapsed: 00:00:00.09\nSQL&gt; select max(created_date) from hr.mytable partition(TABLE_PART_2021);\n\nMAX(CREATED_DATE)\n-------------------\n21.10.2021 07:40:36\n\nElapsed: 00:00:00.09\n\n--For 2022\nSQL&gt; select count(*) from hr.mytable partition(TABLE_PART_2022);\n\n  COUNT(*)\n----------\n   3333333\n\nElapsed: 00:00:00.04\nSQL&gt;   select min(created_date) from hr.mytable partition(TABLE_PART_2022);\n\nMIN(CREATED_DATE)\n-------------------\n21.10.2022 07:37:58\n\nElapsed: 00:00:00.09\nSQL&gt;   select max(created_date) from hr.mytable partition(TABLE_PART_2022);\n\nMAX(CREATED_DATE)\n-------------------\n21.10.2022 07:40:36\n\nElapsed: 00:00:00.09\n<\/code><\/pre>\n\n\n\n<p>One advantage of Oracle Partitionning is the partition pruning which dramatically reduces the amount of data retrieved from disk and shortens processing time, thus improving query performance and optimizing resource utilization (source : <a href=\"https:\/\/docs.oracle.com\/database\/121\/VLDBG\/GUID-45D3CCAF-17BC-4E79-8B7F-E65C7F1866F3.htm#VLDBG14026\">Benefit of Partition Pruning<\/a>).<\/p>\n\n\n\n<p>Let&#8217;s see how to check if Partition Pruning is used:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL&gt; EXPLAIN PLAN FOR select data,created_date from hr.mytable where CREATED_DATE=to_date('21.10.2022 07:40:36','dd.mm.yyyy hh24:mi:ss');\n\nExplained.\n\nElapsed: 00:00:00.01\nSQL&gt; select * from table(dbms_xplan.display);\n\nPLAN_TABLE_OUTPUT\n--------------------------------------------------------------------------------\nPlan hash value: 175839893\n\n--------------------------------------------------------------------------------\n-------------------\n\n| Id  | Operation              | Name     | Rows  | Bytes | Cost (%CPU)| Time\n  | Pstart| Pstop |\n\n\n--------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT       |          | 17040 |   532K|  5803   (1)| 00:00:0\n1 |       |       |\n\n|   1 |  PARTITION RANGE SINGLE|          | 17040 |   532K|  5803   (1)| 00:00:0\n1 |     3 |     3 |\n\n|*  2 |   TABLE ACCESS FULL    | MYTABLE| 17040 |   532K|  5803   (1)| 00:00:0\n1 |     3 |     3 |\n\n--------------------------------------------------------------------------------\n-------------------\n\nPLAN_TABLE_OUTPUT\n--------------------------------------------------------------------------------\n\n\nPredicate Information (identified by operation id):\n---------------------------------------------------\n\n   2 - filter(\"CREATED_DATE\"=TO_DATE(' 2022-10-21 07:40:36', 'syyyy-mm-dd hh24:m\ni:ss'))\n\n\n14 rows selected.\n\nElapsed: 00:00:00.12\nSQL&gt;\n<\/code><\/pre>\n\n\n\n<p>In the execution plan, we see in the plan columns PSTART and PSTOP that only PARTITION number 3 is access meaning partition pruning is used.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Oracle Exchange Partition is a method allowing to : exchange the data segments from a non partitioned table to a partitioned table exchange the data segments from a partitioned table to a non partitioned table. This method is useful because: You can get data quickly in or out of partitioned table You can convert [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,368,59],"tags":[2559,994,644],"type_dbi":[],"class_list":["post-20033","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","category-development-performance","category-oracle","tag-oracle-2","tag-partitioned-table","tag-performance-tuning"],"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 Exchange Partition - 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-exchange-partition\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle Exchange Partition\" \/>\n<meta property=\"og:description\" content=\"The Oracle Exchange Partition is a method allowing to : exchange the data segments from a non partitioned table to a partitioned table exchange the data segments from a partitioned table to a non partitioned table. This method is useful because: You can get data quickly in or out of partitioned table You can convert [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-21T11:22:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-21T11:24:00+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=\"5 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-exchange-partition\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle Exchange Partition\",\"datePublished\":\"2022-10-21T11:22:27+00:00\",\"dateModified\":\"2022-10-21T11:24:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\"},\"wordCount\":389,\"commentCount\":0,\"keywords\":[\"oracle\",\"partitioned table\",\"Performance Tuning\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"Development &amp; Performance\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\",\"name\":\"Oracle Exchange Partition - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2022-10-21T11:22:27+00:00\",\"dateModified\":\"2022-10-21T11:24:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle Exchange Partition\"}]},{\"@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 Exchange Partition - 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-exchange-partition\/","og_locale":"en_US","og_type":"article","og_title":"Oracle Exchange Partition","og_description":"The Oracle Exchange Partition is a method allowing to : exchange the data segments from a non partitioned table to a partitioned table exchange the data segments from a partitioned table to a non partitioned table. This method is useful because: You can get data quickly in or out of partitioned table You can convert [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/","og_site_name":"dbi Blog","article_published_time":"2022-10-21T11:22:27+00:00","article_modified_time":"2022-10-21T11:24:00+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle Exchange Partition","datePublished":"2022-10-21T11:22:27+00:00","dateModified":"2022-10-21T11:24:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/"},"wordCount":389,"commentCount":0,"keywords":["oracle","partitioned table","Performance Tuning"],"articleSection":["Database Administration &amp; Monitoring","Database management","Development &amp; Performance","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/","name":"Oracle Exchange Partition - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2022-10-21T11:22:27+00:00","dateModified":"2022-10-21T11:24:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-exchange-partition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle Exchange Partition"}]},{"@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\/20033","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=20033"}],"version-history":[{"count":6,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20033\/revisions"}],"predecessor-version":[{"id":20085,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20033\/revisions\/20085"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=20033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=20033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=20033"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=20033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}