Oracle分区表

  • 分区类型:RANGE、LIST、HASH
    1. PARTITION BY LIST (createdate)

      (

      PARTITION P01 VALUES LESS THAN (TO_DATE('2018-01-01', 'YYYY-MM-DD')),     // 存储createdate<’2018-01-01’的数据

      PARTITION P02 VALUES LESS THAN (TO_DATE('2018-04-01', 'YYYY-MM-DD')),     // 存储createdate<’ 2018-04-01‘的数据

      PARTITION P99 VALUES LESS THAN (MAXVALUE)                              // 存储createdate>=’ 2018-04-01‘的数据

      );

      RANGE:范围分区
    2. PARTITION BY LIST (supid)

      (

      PARTITION P01 VALUES ('112'),     // 存储supid=’112’的数据

      PARTITION P02 VALUES ('8518')     // 存储supid=’8518'的数据

      PARTITION P99 VALUES (DEFAULT)  // 存储其他supid的数据

      );

      LIST:列表分区

 

    1. PARTITION BY HASH (supid)

      (

      PARTITION P01,

      PARTITION P02,

      PARTITION P03

      );

      HASH:哈希分区(无法控制数据处于哪个分区,相当于hashmap,不知道哪个可以在哪个下标)

 

 

  • create table INVENTORY (

    shopid     VARCHAR2(6) not null,

    placeid    VARCHAR2(20) not null,

    goodsid    INTEGER not null

    )

    PARTITION BY LIST (supid)

    (

    PARTITION P01 VALUES ('112'),

    PARTITION P02 VALUES ('8518'),

    PARTITION P03 VALUES ('5876'),

    PARTITION P04 VALUES ('4524'),

    PARTITION P05 VALUES ('3534'),

    PARTITION P06 VALUES ('3565'),

    PARTITION P07 VALUES ('1148'),

    PARTITION P08 VALUES ('24184'),

    PARTITION P09 VALUES ('3854'),

    PARTITION P10 VALUES ('3852'),

    PARTITION P99 VALUES (DEFAULT)

    );

    方式一:创建表时分区

 

 

  • 方式二:创建表后分区(即普通表转分区表,可能已有数据)
    1. create table INVENTORY (

        shopid     VARCHAR2(6) not null,

        placeid    VARCHAR2(20) not null,

        goodsid    INTEGER not null

      );

      创建表
    2. create table INVENTORY_INTERIM (

           shopid     VARCHAR2(6) not null,

           placeid    VARCHAR2(20) not null,

           goodsid    INTEGER not null

      )

      PARTITION BY LIST (supid)

      (

               PARTITION P01 VALUES ('112'),

               PARTITION P02 VALUES ('8518'),

               PARTITION P03 VALUES ('5876'),

               PARTITION P04 VALUES ('4524'),

               PARTITION P05 VALUES ('3534'),

               PARTITION P06 VALUES ('3565'),

               PARTITION P07 VALUES ('1148'),

               PARTITION P08 VALUES ('24184'),

               PARTITION P09 VALUES ('3854'),

               PARTITION P10 VALUES ('3852'),

               PARTITION P99 VALUES (DEFAULT)

      )

      创建临时表
    3. begin

        dbms_redefinition.can_redef_table('nhd',’INVENTORY’);

      end;

      检查是否能重定义
    4. begin

      dbms_redefinition.start_redef_table('nhd',’INVENTORY,'INVENTORY _INTERIM');

      end;

      开始重定义
    5. begin

      dbms_redefinition.sync_interim_table('nhd',‘INVENTORY,'INVENTORY _INTERIM');

      end

      同步中间表
    6. declare

        error_count number := 0;

      begin

      dbms_redefinition.copy_table_dependents('nhd',’INVENTORY’,'INVENTORY_INTERIM',dbms_redefinition.cons_orig_params,true,true,true,true,error_count);

      end;

      拷贝依赖对象
    7. begin

      dbms_redefinition.finish_redef_table('nhd',’INVENTORY’,'INVENTORY _INTERIM');

      end;

      完成重定义
    8. begin

      dbms_redefinition.abort_redef_table('nhd','INVENTORY','INVENTORY_INTERIM');

      end;

      取消重定义(发生错误或中断时使用)

转载于:https://my.oschina.net/u/2469180/blog/1858021

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值