ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2(5)
DB2 中我们需要首先建立 DPF,然后再在此 DPF 上建立表分区,这里就不详细说明 DPF 的建立过程,DB2 中与上面表对应的表定义如下:
清单 10. DB2 中 Range-DPF 表示例
p class="codesection">create table car( car_id varchar(10), sales_date date, sales_cost number) in tbsp1, tbsp2, tbsp3, tbsp4, tbsp5 distribute by hash(car_id) partition by range(sales_date) (starting from ('01/01/2012') ending ('31/12/2012') every (3 month));
Oracle Partition table 到 db2 的数据迁移
数据库的迁移工作相当繁复,本文主要介绍 oracle 中的 partition table 如何迁移到 db2 中,其中相应的 oracle 到 db2 的 partition 的映射已经在前一节中进行了说明,下面就以 oracle 中的 range partitionhe 和 hash partition 的 table 迁移到 db2 为例,介绍如何将一个 oracle 的分区表迁移到 db2 中 , 对于 oracle 数据迁移到 db2 的主要流程这里就不在赘述。除了对表完成映射外,还要完成表对象的部署、数据抽取、以及如何把数据部署到 db2 对应的分区表中。对于表 partition 表对象的部署我们还可以勉强手动创建来解决,然而对于数据的抽取和部署,却很难完成,因此我们可以借助 IBM 开发的一些辅助工具,如 Migration Toolkit(MTK)、Data Movement Tool 等。
oracle 的 range partition 到 DB2 的 table partition
下面我们假设 Oracle 数据库中有一个 range partition 的表,该表的定义如下,下面我们以此表为案例,把该表迁移到 DB2 的 table partition 中。
清单 11.Oracle 中 Range partition 表定义
p class="codesection">CREATE TABLE usertest.sales ( year int, month int ) PARTITION BY RANGE (year, month) (PARTITION p1 VALUES LESS THAN (2009,4) tablespace tbsp1, PARTITION p2 VALUES LESS THAN (2009,7) tablespace tbsp2, PARTITION p3 VALUES LESS THAN (2009,10) tablespace tbsp3, PARTITION p4 VALUES LESS THAN (2010,1) tablespace tbsp4, );
其中 usertest 为该表的 schema, 这里我们创建了 4 个 partition 分别在 tbsp1、tbsp2、tbsp3、tbsp4 四个表空间内,通过 select 语句查询出数据集。
图 4.Oracle 中 Range Partition 表的数据查询结果集
下面就需要把这个 range partition 的表迁移到 db2 中,首先在 db2 中创建与之对应的 table partition 的表。在 oracle 中比当前日期小的值不包含在相应的 partition 中,如上面 sql 中的,这一点与 db2 不同。其中对应的 db2 中的建表语句如下:
清单 12. DB2 中 Table partition 的表定义
p class="codesection">CREATE TABLE "USERTEST"."SALES" ( "YEAR" DECFLOAT(16) , "MONTH" DECFLOAT(16) ) PARTITION BY RANGE ("YEAR","MONTH") ( PARTITION P1 STARTING (MINVALUE,MINVALUE) INCLUSIVE ENDING (2009, 4) INCLUSIVE ,PARTITION P2 ENDING (2009, 7) INCLUSIVE ,PARTITION P3 ENDING (2009, 10) INCLUSIVE ,PARTITION P4 ENDING (2010, 1) INCLUSIVE )
在 DB2 中我们也定义了 4 个分区 P1、P2、P3、P4,在做数据迁移时,如果我们用 import、export 做数据的迁入迁出,对比生成的 data 文件我们会发现 oracle 和 db2 的数据格式完全不一样,因此对于数据规模比较大的表用 import、export 就不太现实,这时我们可以借助 IDMT 来进行表的定义以及数据的导出导入。这里我们借助 IDMT 来进行数据的导出导入, 其具体的使用说明可参 IDMT 的使用说明 http://www.ibm.com/developerworks/data/library/techarticle/dm-0906datamovement。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>