怎么理解交换分区?
字面理解就是将源表和目标表的两个分区交换。
这种操作比较危险,慎用!!!
我今天做的实验是将一张分区表转到一张普通表,为的是实现数据迁移。
源表是分区表,目标表是普通表
执行语句
alter table 源表 exchange subpartition P_16_Z419001 with table 目标表;
因为目标表是空表,所以将源表的分区数据替换为空,源表数据插入目标表。
缺点是对于这种复合分区只能从子分区交换,子分区比较多就显得很繁琐,需要建多张普通表。
alter table 源表 exchange subpartition P_15_Z419001 with table 目标表;
换个分区再次执行报错
ORA-14283: UNIQUE 约束条件在 ALTER TABLE EXCHANGE SUBPARTITION 中不匹配
给普通表加了主键索引解决。
alter table 源表 exchange subpartition P_15_Z419001 with table 目标表 without validation;
再次执行发现问题,普通表的数据居然与源表的数据进行了交换,至此终于明白交换分区的机制。