利用原表重建分区表
这种方法的特点是:
优点:方法简单易用,由于采用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
验证新表数据