普通表改造分区表(二):EXCHANGE PARTITION

交换分区的操作步骤如下:

1. 创建分区表(包含索引、约束等),假设有2个分区,P1,P2.

2. 创建表A存放P1规则的数据。

3. 创建表B 存放P2规则的数据。

4. 用表A 和P1 分区交换。 把表A的数据放到到P1分区

5. 用表B 和p2 分区交换。 把表B的数据存放到P2分区。  


通过原表创建新分区表的表结构

点击(此处)折叠或打开

  1. create table TEST_2016_05_06_PART_2
  2. (
  3.   owner ,
  4.   table_name ,
  5.   tablespace_name ,
  6.   cluster_name ,
  7.   iot_name ,
  8.   status ,
  9.   pct_free ,
  10.   pct_used ,
  11.   ini_trans ,
  12.   max_trans ,
  13.   initial_extent ,
  14.   next_extent ,
  15.   min_extents ,
  16.   max_extents ,
  17.   pct_increase ,
  18.   freelists ,
  19.   freelist_groups ,
  20.   logging ,
  21.   backed_up ,
  22.   num_rows ,
  23.   blocks ,
  24.   empty_blocks ,
  25.   avg_space ,
  26.   chain_cnt ,
  27.   avg_row_len ,
  28.   avg_space_freelist_blocks ,
  29.   num_freelist_blocks ,
  30.   degree ,
  31.   instances ,
  32.   cache ,
  33.   table_lock ,
  34.   sample_size ,
  35.   last_analyzed ,
  36.   partitioned ,
  37.   iot_type ,
  38.   temporary ,
  39.   secondary ,
  40.   nested ,
  41.   buffer_pool ,
  42.   flash_cache ,
  43.   cell_flash_cache ,
  44.   row_movement ,
  45.   global_stats ,
  46.   user_stats ,
  47.   duration ,
  48.   skip_corrupt ,
  49.   monitoring ,
  50.   cluster_owner ,
  51.   dependencies ,
  52.   compression ,
  53.   compress_for ,
  54.   dropped ,
  55.   read_only ,
  56.   segment_created ,
  57.   result_cache
  58. ) partition by list(tablespace_name)
  59. (
  60.   partition P_SYSAUX values('SYSAUX') tablespace APMDBS,
  61.   partition P_TBS_CUS_DMP values('TBS_CUS_DMP') tablespace APMDBS,
  62.   partition P_MSP values('MSP') tablespace APMDBS,
  63.   partition P_USERS values('USERS') tablespace APMDBS,
  64.   partition P_SYSTEM values('SYSTEM') tablespace APMDBS,
  65.   partition P_TBS_CRM_IITF values('TBS_CRM_IITF') tablespace APMDBS,
  66.   partition P_APMDBS values('APMDBS') tablespace APMDBS,
  67.   partition P_OTHERS values (default) tablespace APMDBS
  68. ) as select * from xjmon.TEST_2016_05_06 where rownum = 0;
创建相关索引 约束等到新的分区表上。

创建符合分区规则的数据到用于转换分区的临时表

点击(此处)折叠或打开

  1. create table xjmon.A1 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'SYSAUX';
  2. create table xjmon.A2 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'TBS_CUS_DMP';
  3. create table xjmon.A3 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'MSP';
  4. create table xjmon.A4 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'USERS';
  5. create table xjmon.A5 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'SYSTEM';
  6. create table xjmon.A6 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'TBS_CRM_IITF';
  7. create table xjmon.A7 as select * from XJMON.TEST_2016_05_06 where tablespace_name = 'APMDBS';
  8. create table xjmon.A8 as select * from XJMON.TEST_2016_05_06 where tablespace_name = null;
转换数据到分区表的指定分区中,经查询数据量保持一致

点击(此处)折叠或打开

  1. SQL> ALTER TABLE XJMON.TEST_2016_05_06_PART_2 EXCHANGE PARTITION P_SYSAUX WITH TABLE XJMON.A1;

  2. Table altered.

  3. Elapsed: 00:00:00.50
  4. SQL> select count(*) from XJMON.TEST_2016_05_06_PART_2 PARTITION(P_SYSAUX);

  5.   COUNT(*)
  6. ----------
  7.       1390
  8. SQL> select count(*) from  XJMON.TEST_2016_05_06 where tablespace_name= 'SYSAUX';
  9.   COUNT(*)
  10. ----------
  11.       1390
  12. Elapsed: 00:00:00.01


注意:
采用转换分区的方式,仍然需要先把原普通表中复合分区规则的数据查询出,并创建到一张临时表。该方式的原理,与CTS中,先创建分区表结构,然后按照查询出复合单个分区数据并插入到指定分区,这种方式原来相似。
但该方式,有转换分区的优点:转换数据时,基本不涉及IO




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28551528/viewspace-2121212/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28551528/viewspace-2121212/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值