达梦普通表转换为分区表

逻辑导入导出方式

创建测试表:

create table t4 (id int);
begin
for i in 1..100000 loop
insert into t4 values (i);
commit;
end loop;
end;

导出数据:

./dexp SYSDBA/SYSDBA@LOCALHOST:5236 file=/data/t4.dmp tables=t4 

删除非分区表:

SQL> drop table t4;

创建分区表:

create table t4 (id int)
partition by range (id)
interval(20000)
(partition p1 values less than (20000),
partition p2 values less than (40000)
 );

5.导入数据:

./dimp SYSDBA/SYSDBA@LOCALHOST:5236 file=/data/t4.dmp tables=t4 ignore=y(忽略创建错误)

支持间隔分区

分区交换方式

构造数据

create table t4 (id int);
begin
for i in 1..100000 loop
insert into t4 values (i);
commit;
end loop;
end;

创建普通分区表

create table t5 (id int)
partition by range (id)
(
partition p1 values less than (20000),
partition p2 values less than (40000),
partition pN values less than (maxvalue)
 );

将非分区表test的数据交换到test_fenqu表的p4分区,执行之前需要取消主键,删除索引,交换完成后进行重建。

alter table t5 exchange partition pN with table t4;

使用如下语句查询test_fenqu分区表的数据分布:

select 'p1' partition_name, count(*) num from t5 partition(p1)
 union all
select 'p2', count(*) from t5 partition(p2)
 union all
select 'p3', count(*) from  t5 partition(pN);

普通非分区表的数据交换到分区表的某个分区后,数据并不进行校验,也就是说不管是否满足该分区的范围,数据都会进入该分区。
在这里插入图片描述
使用split将分区拆分:
上述数据交换后,所有数据都在一个分区,完全不符合我们将数据放入分区表的初衷,此时可以使用分区拆分,分区拆分会对分区中的数据进行重组,拆分后数据会重新按照分区范围分布。执行以下命令进行分区拆分(仅范围分区支持分区拆分):

alter table t5 split partition pN at (100000) into (partition p3, partition pmax);

分区拆分后,使用如下语句查询t_partitiontab分区表的数据分布:

select 'p1' partition_name, count(*) num from t5 partition(p1)
 union all
select 'p2', count(*) from t5 partition(p2)
 union all
select 'p3', count(*) from  t5 partition(p3)
 union all
select 'p4', count(*) from  t5 partition(pmax);

在这里插入图片描述
使用分区交换exchange需注意:

  1. 分区交换仅支持范围和列表分区,不支持HASH分区。

  2. 分区交换可以将非分区表的数据交换到分区表,也可以将分区表的数据交换到非分区表,本质上是源表和目标表数据的互换。

  3. 分区交换要求分区表与交换表具有相同的结构(相同的表类型、相同的BRANCH选项、相同的列结构、相同的索引、相同的分布方式),否则会报“[-7000]:交换对象不匹配”的错误。

  4. 不支持含全局索引的分区表与普通表进行交换分区操作。

  5. 分区交换时不会进行数据校验,如果交换表的数据不符合分区范围,数据仍然会进入该分区。此时如果是范围分区可以使用split拆分分区,系统会自动对数据进行重组。

  6. 在生产环境中,为保证数据安全,建议对源表的数据备份后再做分区交换。

使用dts迁移工具进行迁移

打开迁移dts迁移工具
在这里插入图片描述

选择DM-DM

在这里插入图片描述

指定源端和目的端:
在这里插入图片描述
点击完成,开始迁移
在这里插入图片描述
本文总结:
目前测试dts工具将普通表迁移至分区表耗时最长,逻辑导入导出第二,分区交换因为没有io操作,所以最快
dts分区转换:支持所有类型的分区
逻辑导入导出分区转换:支持所有类型的分区操作
分区交换:间隔分区使用split拆分时,会提示无法按指定的上限来分割分区,目前来看范围分区可以正常使用分区交换方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值