普通表转换为分区表操作

Oracle 普通表没有办法通过修改属性的方式直接转换为分区表 , 必须通过重建的方式来进行转变,下面通过举例来介绍

利用原表重建分区表

   这种方法的特点是:

   优点:方法简单易用,由于采用DDL语句,不会产生UNDO,且只产生少量REDO,效率相对较高,而且建表完成后数据已经在分布到各个分区中了。

不足:对于数据的一致性方面还需要额外的考虑。由于几乎没有办法通过手工锁定T表的方式保证一致性,在执行CREATE TABLE语句和RENAME T_NEW TO T语句直接的修改可能会丢失,如果要保证一致性,需要在执行完语句后对数据进行检查,而这个代价是比较大的。另外在执行两个RENAME语句之间执行的对T的访问会失败。

 适用于修改不频繁的表,在闲时进行操作,表的数据量不宜太大。

  举例说明

  创建普通表并插入测试数据

   SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);

Table created

SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;

50950 rows inserted

  查看数据

图片

创建一个分区表

CREATE TABLE T_NEW (ID, TIME) PARTITION BY RANGE (TIME)

     (PARTITION T1 VALUES LESS THAN (TO_DATE('2005-9-1', 'YYYY-MM-DD')),

      PARTITION T2 VALUES LESS THAN (TO_DATE('2012-4-1', 'YYYY-MM-DD')),

      PARTITION T3 VALUES LESS THAN (MAXVALUE))

      AS SELECT ID, TIME FROM T;

改变表名

SQL> rename t to t_old;

Table renamed

SQL> rename t_new to t;

Table renamed

验证新表数据

 图片

图片

图片图片

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值