设为首页 加入收藏

TOP

ORACLE 迁移到 DB2:如何把 Oracle partition 转化到 DB2(二)
2014-11-23 21:29:42 来源: 作者: 【 】 浏览:29
Tags:ORACLE 迁移 DB2 如何 Oracle partition 转化
ING (2001,3) IN tbsp1, ENDING (2001,6) IN tbsp2, ENDING (2001,9) IN tbsp3, ENDING (2001,12) IN tbsp4, ENDING (2002,3) IN tbsp5, ENDING (2002,6) IN tbsp6, ENDING (2002,9) IN tbsp7, ENDING AT MAXVALUE );
  • Oracle 的列表分区

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

    清单 3. Oracle 中的列表分区示例
     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 中带生成列的表分区示例
    				 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 中的哈希分区示例
     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 中带生成列的表分区示例
     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 中如何与这两种复合分区进行映射。

    • Range-list

      Range-list:该复合分区就是 Range partition 和 list partition 相结合的分区方法,前面已经介绍了 oracle 的 Range 分区和 List 分区在 DB2 中的实现方法,那么这种复合分区对应到 DB2 中,我们只需综合使用上述非复合分区的方法。

      例如在 ORACLE 数据库有一张表 store,该表以字段 sales_date 作 range partition 以字段 store_distrct 作为 list partition,该表的定义如下 :

      清单 7. Oracle 中 Range-list 表示例
       create table store( 
      	 store_id varchar2(10), 
      	 store_district varchar2(20), 
      	 sales_date date, 
      	 revenue number(10) 
       ) 
      	 partition by range(sales_date) 
      	 subpartition by list(store_distrct) 
      		 subpartition template( 
      			 subpartition subpar1 values ('haidian') tablespace tbsp1, 
      			 subpartition subpar2 values ('chaoyang') tablespace tbsp1, 
      			 subpartition subpar3 values ('dongcheng') tablespace tbsp1, 
      			 subpartition subpar4 values ('xicheng') tablespace tbsp1, 
      			 subpartition subpar5 values ('fengtai') tablespace tbsp1, 
      			 subpartition subpar1 values ('shijingshan') tablespace tbsp1) 
      	 ( 
      	 partition par1 vales less than (to_date('01/04/2012','DD/MM/YYYY')), 
      	 partition par2 vales less than (to_date('01/07/2012','DD/MM/YYYY')), 
      	 partition par3 vales less than (to_date('01/10/2012','DD/MM/YYYY')), 
      	 partition par4 vales less than (MAXVALUE) 
      	 );

      我们如何将该 oracle 的 range-list 的

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

    评论

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