ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:

  • Oracle 的列表分区

    Oracle 中的列表分区(list partition)可以直接映射到 DB2 中的带生成列的表分区中,在前面已经讲过 Oracle 的列表分区的定义,DB2 的表分区的定义中提供了一个可以带生成列的方法,这样带生成列的表分区与 Oracle 的列表分区逻辑结构类似。

    清单 3. Oracle 中的列表分区示例
    p class="codesection">
     CREATE TABLE customer 
     ( 
     cust_id int, 
     cust_prov varchar2(2) 
     Chapter 2. Language compatibility features 127 
     ) 
     PARTITION BY LIST (cust_prov) 
     (PARTITION p1 VALUES ('AB', 'MB') tablespace tbsp_ab, 
     PARTITION p2 VALUES ('BC') tablespace tbsp_bc, 
     PARTITION p3 VALUES ('SA') tablespace tbsp_mb, 
    … . 
     PARTITION p13 VALUES ('YT') tablespace tbsp_yt, 
     PARTITION p14 VALUES(DEFAULT) tablespace tbsp_remainder );

    该表对应的 DB2 的带生成列的表分区的示例如下:

    清单 4. DB2 中带生成列的表分区示例
    p class="codesection">
    				 CREATE TABLE customer 
     ( 
     cust_id INT, 
     cust_prov CHAR(2), 
     cust_prov_gen GENERATED ALWAYS AS 
     (CASE 
     WHEN cust_prov = 'AB' THEN 1 
     WHEN cust_prov = 'BC' THEN 2 
     WHEN cust_prov = 'MB' THEN 1 
     WHEN cust_prov = 'SA' THEN 3 
     ... 
     WHEN cust_prov = 'YT' THEN 13 
     ELSE 14 
     END) 
     ) 
     IN tbsp_ab, tbsp_bc, tbsp_mb, .... tbsp_remainder 
     PARTITION BY RANGE (cust_prov_gen) 
     (STARTING 1 ENDING 14 EVERY 1);

    另外需要说的是把 oracle 的 List partition 映射到 db2 的 MDC 也可以是一种选择。

  • Oracle 的哈希分区

    Oracle 中的哈希分区(hash partition)的定义在第一节中已经说明,那么在 DB2 中用到哈希算法的只有 DPF 的定义中,虽然在物理上 Oracle 没有 DPF 的概念,但是数据在逻辑上都能按照哈希算法分配到对应的分区上。因此在数据迁移是可以把 Oracle 的哈希分区映射到 DB2 中按照哈希算法分布的 DPF 上。而且在实际应用中,这比 Oracle 的哈希分区执行效率更好

    如 Oracle 中哈希分区示例

    清单 5. Oracle 中的哈希分区示例
    p class="codesection">
     CREATE TABLE hash_table 
     ( 
     hash_part date, 
     hash_data varchar2(20) 
     ) 
     PARTITION BY HASH(hash_part) 
     (partition p1 tablespace tbsp1, 
     partition p2 tablespace tbsp2 
     );

    映射到 DB2 的 DPF 示例如下:

    清单 6. DB2 中带生成列的表分区示例
    p class="codesection">
     CREATE TABLE partition_table 
     (partition_date date NOT NULL, 
     partition_data VARCHAR(20) NOT NULL 
     ) 
     IN tbsp_parts 
     DISTRIBUTE BY HASH (partition_date);

    综上所述,Oracle 中的任一单一分区均可以在 DB2 中实现,反观之,DB2 特有的多维集群却不能在 Oracle 中实现,

  • 图 3.Oracle 到 DB2 的分区映射
    Oracle 到 DB2 的分区映射

    在 DB2 中模拟 Oracle 复合分区

    前面已经对 oracle 的复合分区进行了见到的介绍,这里我们只对其中的两种进行详细的说明 (Range-list 和 Range-hash),并且介绍在 DB2 中如何与这两种复合分区进行映射。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • db2管理工具小结
    • DB2数据库的导出与导入(Windows客户端)
    • db2 CLP中如何换行
    • DB2查看表结构及所用表语句
    • DB2 · CREATE TABLESPACE
    • 使用DB2对象:创建模式、表和视图
    • DB2数据库逻辑卷的复制
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1