交换分区的操作步骤如下:
通过原表创建新分区表的表结构
创建相关索引 约束等到新的分区表上。
创建符合分区规则的数据到用于转换分区的临时表
转换数据到分区表的指定分区中,经查询数据量保持一致
注意:
采用转换分区的方式,仍然需要先把原普通表中复合分区规则的数据查询出,并创建到一张临时表。该方式的原理,与CTS中,先创建分区表结构,然后按照查询出复合单个分区数据并插入到指定分区,这种方式原来相似。
但该方式,有转换分区的优点:转换数据时,基本不涉及IO
1. 创建分区表(包含索引、约束等),假设有2个分区,P1,P2.
2. 创建表A存放P1规则的数据。
3. 创建表B 存放P2规则的数据。
4. 用表A 和P1 分区交换。 把表A的数据放到到P1分区
5. 用表B 和p2 分区交换。 把表B的数据存放到P2分区。
通过原表创建新分区表的表结构
点击(此处)折叠或打开
- create table TEST_2016_05_06_PART_2
- (
- owner ,
- table_name ,
- tablespace_name ,
- cluster_name ,
- iot_name ,
- status ,
- pct_free ,
- pct_used ,
- ini_trans ,
- max_trans ,
- initial_extent ,
- next_extent ,
- min_extents ,
- max_extents ,
- pct_increase ,
- freelists ,
- freelist_groups ,
- logging ,
- backed_up ,
- num_rows ,
- blocks ,
- empty_blocks ,
- avg_space ,
- chain_cnt ,
- avg_row_len ,
- avg_space_freelist_blocks ,
- num_freelist_blocks ,
- degree ,
- instances ,
- cache ,
- table_lock ,
- sample_size ,
- last_analyzed ,
- partitioned ,
- iot_type ,
- temporary ,
- secondary ,
- nested ,
- buffer_pool ,
- flash_cache ,
- cell_flash_cache ,
- row_movement ,
- global_stats ,
- user_stats ,
- duration ,
- skip_corrupt ,
- monitoring ,
- cluster_owner ,
- dependencies ,
- compression ,
- compress_for ,
- dropped ,
- read_only ,
- segment_created ,
- result_cache
- ) partition by list(tablespace_name)
- (
- partition P_SYSAUX values('SYSAUX') tablespace APMDBS,
- partition P_TBS_CUS_DMP values('TBS_CUS_DMP') tablespace APMDBS,
- partition P_MSP values('MSP') tablespace APMDBS,
- partition P_USERS values('USERS') tablespace APMDBS,
- partition P_SYSTEM values('SYSTEM') tablespace APMDBS,
- partition P_TBS_CRM_IITF values('TBS_CRM_IITF') tablespace APMDBS,
- partition P_APMDBS values('APMDBS') tablespace APMDBS,
- partition P_OTHERS values (default) tablespace APMDBS
- ) as select * from xjmon.TEST_2016_05_06 where rownum = 0;
创建符合分区规则的数据到用于转换分区的临时表
点击(此处)折叠或打开
- create table xjmon.A1 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'SYSAUX';
- create table xjmon.A2 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'TBS_CUS_DMP';
- create table xjmon.A3 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'MSP';
- create table xjmon.A4 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'USERS';
- create table xjmon.A5 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'SYSTEM';
- create table xjmon.A6 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'TBS_CRM_IITF';
- create table xjmon.A7 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'APMDBS';
- create table xjmon.A8 as select * from XJMON.TEST_2016_05_06 where tablespace_name = null;
点击(此处)折叠或打开
- SQL> ALTER TABLE XJMON.TEST_2016_05_06_PART_2 EXCHANGE PARTITION P_SYSAUX WITH TABLE XJMON.A1;
-
- Table altered.
-
- Elapsed: 00:00:00.50
- SQL> select count(*) from XJMON.TEST_2016_05_06_PART_2 PARTITION(P_SYSAUX);
-
- COUNT(*)
- ----------
- 1390
- SQL> select count(*) from XJMON.TEST_2016_05_06 where tablespace_name= 'SYSAUX';
- COUNT(*)
- ----------
- 1390
- Elapsed: 00:00:00.01
注意:
采用转换分区的方式,仍然需要先把原普通表中复合分区规则的数据查询出,并创建到一张临时表。该方式的原理,与CTS中,先创建分区表结构,然后按照查询出复合单个分区数据并插入到指定分区,这种方式原来相似。
但该方式,有转换分区的优点:转换数据时,基本不涉及IO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28551528/viewspace-2121212/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28551528/viewspace-2121212/