设为首页 加入收藏

TOP

ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2(四)
2014-11-23 21:29:42 来源: 作者: 【 】 浏览:27
Tags:ORACLE 迁移 DB2 如何 Oracle partition 转化
时,如果我们用 import、export 做数据的迁入迁出,对比生成的 data 文件我们会发现 oracle 和 db2 的数据格式完全不一样,因此对于数据规模比较大的表用 import、export 就不太现实,这时我们可以借助 IDMT 来进行表的定义以及数据的导出导入。这里我们借助 IDMT 来进行数据的导出导入, 其具体的使用说明可参 IDMT 的使用说明 http://www.ibm.com/developerworks/data/library/techarticle/dm-0906datamovement

其数据导入后,用 datastudio 进行数据查询的结果。根据查询结果集的对比可知数据已经完全迁移过来。

图 5:DB2 中 Table Partition 表的数据查询结果集
DB2 中 Table Partition 表的数据查询结果集

Oracle 的 Hash partition 到 DB2 的 DPF

假设在一个 Oracle 数据库中有一个 Hash Partition 的表定义如下:

清单 13. Oracle 中 Hash table 的表定义
 CREATE TABLE hash_sales 
 ( 
 salesdate date, 
 protype varchar2(20), 
 proname varchar2(20) 

 ) 
 PARTITION BY HASH(salesdate) 
 ( 
 partition p0 tablespace tbhash, 
 partition p1 tablespace tbhash 
 );

该表以 hash_part 字段按照 HASH 算法分区,创建了两个分区 p1 和 p2 分别在表空间 tbsp1 和 tbsp2 中。用 select 语句查询出其数据结果集:

图 6.Oracle 中 Hash Partition 表的数据查询结果集
Oracle 中 Hash Partition 表的数据查询结果集

根据前面所说,我们可以把该 table 映射到 DB2 的 DPF 上。如果当前 DB 已经创建好了 DPF,那么我就直接创建 table 即可,但是做 migration 很多时候都需要自己创建逻辑分区,我们将按照下面的步骤创建 DPF、Table space 以及 Table。

  • 用 db2start 添加 partition

    我们可以用 db2start 来创建 partition,其命令格式如下:

    db2start dbpartitionnum PARTITIONNUM add dbpartitionnum hostname port without tablespaces

    这里我们已经有了一个 partition 0,我们再创建一个 partition 1。

    db2start dbpartitionnum 1 add dbpartitionnum n4shost port 1 withoust tablespaces

  • 创建 partition group

    partition 添加完成之后,下面就需要为 partition 创建 partition group。其命令格式如下:

    create database partition group on dbpartitionnums(, … )

    这里我们创建的 group 为 grouphash。

    Create database partition group grouphash on dbpartitionnums(0,1)
  • 创建 tablespace

    在该 partition group 中创建 tablespace。其命令格式如下:

    Create tablespace in database partition group

    这里我们创建表空间 tphash:

    Create tablespace tphash in database partition group grouphash

  • 创建 table

    在 tbptest 中创建与 oracle 对应的 table,其 sql 语句如下:

    清单 14. DB2 中与之映射的 DPF table
     create table hash_sales( 
     salesdate date, 
     protype varchar(20), 
     proname varchar(20) 
     ) 
     in tphash  
     distribute by hash(salesdate)

完成了表的创建,下面就是数据的导出与导入,与上一节相同我们同样可以采用工具 IDMT 来实现。但是在本次实验中的数据很少,因此这里我们就直接用 import 来实现数据的导入。数据导入完成之后通过 clp 查询的数据结果如下图所示。

图 7.db2 中映射的 DPF 表查询结果集
db2 中映射的 DPF 表查询结果集

总结

本文分别对 Oracle 和 DB2 的分区模式进行了概述,并且对两种数据的分区方式进行对比,介绍了 Oracle 中的简单分区在 DB2 中我们可以采用什么样的分区方式与之映射。对于 Oracle 中的复合分区,本文也对 Range-list 和 Range-hash 进行了介绍以及提出了在 DB2 中与之映射的方案。同时我们也对 oracle 中的 range partition 和 hash partition 的表如何迁移到 db2 中进行了简单的描述,并且提供了相应的方法。

总之,本文对 oracle 的 partition 迁移到 db2 提供了一个整体的映射方案并且提供了一些简单的数据迁移方法,对于复杂的复合分区还有待于完善

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇动态SQL四种类型的语句格式 下一篇DB2异库(异机)重定向恢复步骤

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: