[SYS@orcl#09-3月 -10]SQL>create table t(id number primary key,time date);
表已創建。
[SYS@orcl#09-3月 -10]SQL>insert into t select rownum,created from dba_objects;
已創建50362行。
[SYS@orcl#09-3月 -10]SQL>create table t_n(id number primary key,time date)
2 partition by range(time)
3 (partition p1 values less than (maxvalue));
表已創建。
[SYS@orcl#09-3月 -10]SQL>alter table t_n exchange partition p1 with table t;
表已更改。
[SYS@orcl#09-3月 -10]SQL>select count(*) from t_n;
COUNT(*)
----------
50362
[SYS@orcl#09-3月 -10]SQL>alter table t_n split partition p1 at (to_date('2008-4-1','yyyy-mm-dd')
2 ) into (partition p1,partition p2);
表已更改。
[SYS@orcl#09-3月 -10]SQL>select count(*) from t_n;
COUNT(*)
----------
50362
[SYS@orcl#09-3月 -10]SQL>select count(*) from t;
COUNT(*)
----------
0
關鍵詞:
注意:
涉及交換的兩表之間表結構必須一致,除非附加with validation子句;
如果是從非分區表向分區表做交換,非分區表中的數據必須符合分區表中指定分區的規則,除非附加without validation子句;
如果從分區表向分區表做交換,被交換的分區的數據必須符合分區規則,除非附加without validation子句;
Global索引或涉及到數據改動了的global索引分區會被置為unusable,除非附加update indexes子句。
提示:
一旦附加了without validation子句,則表示不再驗證數據有效性,因此指定該子句時務必慎重。
例如:
JSSWEB> insert intot_partition_range_tmp values (8,'g');
已創建 1 行。
JSSWEB> alter tablet_partition_range exchange partition t_range_p2
2 with tablet_partition_range_tmp without validation;
表已更改。
JSSWEB> insert intot_partition_range_tmp values (8,'g');
已創建 1
行。
JSSWEB> alter table t_partition_range exchange partition t_range_p2
2 with tablet_partition_range_tmp without validation;
表已更改。
JSSWEB> select *from t_partition_range partition(t_range_p2);
ID NAME
------------------------------------------------------------
11 a
12 b
13 c
8 g
雖然新插入的記錄並不符合t_range_p2分區的范圍值,但指定了without validation後,數據仍然轉換成功。