从Oracle向DB2迁移的策略以及最佳实践

本文讲解了从Oracle到DB2迁移的最佳解决方案,主要从三件事开始:

  一、某电信公司的转型故事

  1、该电信公司数据仓库技术结构:
         



  · 省中心BOSS数据加载到DB2中央数据仓库中。

  · 中央数据仓库生成地市所需要的中间结果或分析结果并加载到数据集市中。

  · BI应用包括仓库应用和集市应用。

  2、硬件结构
      



  3、“账户资费”仓库应用响应时间慢

  1)数据库表适用情况

  这个涉及100多张表,其中有30多张大表,记录数都在10亿条以上,而表中数据分布在32个DPF分区上。

  2)适用PAT系统化方法优化

  应用监控: I/O、CPU、网络和内存。

  配置检查:系统配置、DBM参数和DB参数。

  涉及检查:罗技涉及和物理设计。

  性能优化:针对性调整。
参与18

0 同行回答

“答”则兼济天下,请您为题主分忧!
xp123321 xp123321 系统管理员 CEB
PAT多举几个例子就好了显示全部
PAT多举几个例子就好了 收起
金融其它 · 2012-01-20
浏览1341
moonriver moonriver 软件开发工程师 朗新科技(中国)有限公司系统集成部
楼主写得很好,要是再加些迁移中遇到的问题及如何解决的方法就更好了!显示全部
楼主写得很好,要是再加些迁移中遇到的问题及如何解决的方法就更好了! 收起
互联网服务 · 2012-01-12
浏览1279
charlescai charlescai 技术主管 uyatech
最近正在学迁移。。。显示全部
最近正在学迁移。。。 收起
生活生产服务 · 2012-01-12
浏览1309
zixindafang zixindafang 其它 00000000000
经典 收起
IT其它 · 2011-11-23
浏览1297
study123 study123 系统架构师 ERICSSON
比较笼统显示全部
比较笼统 收起
系统集成 · 2011-11-20
浏览1294
eric eric 系统运维工程师 某金融单位
分享完结显示全部
分享完结 收起
保险 · 2011-11-11
浏览1306
eric eric 系统运维工程师 某金融单位
 2、 DB2 V9.7的新思路内置地支持Oracle的语法,语义及相关工具:客户通过开关参数选择使用DB2还是Oracle语境,同意执行引擎保证PL/SQL和SQL PL有相同的性能。  3、 DB2 9.7支持下面的Oracle功能只有极少情况下才需要更改。  4、 并发控制比较1) Oracle默认情况语句级快...显示全部

 2、 DB2 V9.7的新思路

8.jpg


内置地支持Oracle的语法,语义及相关工具:客户通过开关参数选择使用DB2还是Oracle语境,同意执行引擎保证PL/SQL和SQL PL有相同的性能。

  3、 DB2 9.7支持下面的Oracle功能


只有极少情况下才需要更改。


  4、 并发控制比较

1) Oracle默认情况

语句级快照。


2) DB2 V9.7之前默认情况

游标稳定隔离级别。


3) DB2 V9.7目前默认情况

当前提交隔离级别。


  5、 创建兼容Oracle的DB2数据库

Db2set DB2_COMPATIBILITY_VECTOR=ORA
Db2stop force
Db2start
Db2 “CREATE
DATABASE dbName AUTOMATIC STORAGE YES
ON
PAGESIZE 32 K”

Recommended but not required
Db2 UPDATE DB CFG FOR dbName
USING AUTO_REVAL deferred_force
DECFLT_ROUNDING round_half_up


  6、 DB2中的PL/SQL代码

CREATE PACKAGE sample IS
TYPE emps_array IS VARRAY(30) OF
VARCHAR2(6);

PROCEDURE get_dept_emp (
Dno IN emp.deptno%TYPE DEFAULT
1,
Emps_dno OUT emps_array );
END sample;
/
CREATE PACKAGE BODY sample IS
PROCEDURE get_dept_emp (
Dno IN emp.deptno%TYPE,
Emps_dno OUT emps_array) IS
BEGIN
IF dno IS
NOT
NULL
THEN
SELECT empno BULK COLLECT INTO emps_dno FROM emp WHERE deptno=dno;
FOR x in emps_dno.FIRST .. emps_dno.LAST LOOP
DBMS_OUTPUT.PUT_LINE(emps_dno(x));
END LOOP;
END
IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(‘SQLCODE: ’ || SQLCODE);
END get_dept_empno;
END sample;
/
CREATE TYPE emp_dept
IS
TABLE
OF emp%ROWTYPE;

收起
保险 · 2011-11-11
浏览1305
eric eric 系统运维工程师 某金融单位
  5、 存储模型对比  6、 全局临时表:DB2功能更多临时表不会被锁定,在插入、更新时不产生redo log,容易维护,通常用来保存操作的中间结果集来提升性能:  7、 视图:非常相似Oracle和DB2视图功能相似,如下表所示:  8、 索引:难分仲伯  9、 序列:DB2更细腻用法上相同,DB2还支...显示全部

  5、 存储模型对比

1.jpg


  6、 全局临时表:DB2功能更多

临时表不会被锁定,在插入、更新时不产生redo log,容易维护,通常用来保存操作的中间结果集来提升性能:


  7、 视图:非常相似

Oracle和DB2视图功能相似,如下表所示:



  8、 索引:难分仲伯


  9、 序列:DB2更细腻

用法上相同,DB2还支持标识列:


  10、约束:Oracle更灵活

区别见下表:



  三、当Oracle开发者遇到DB2

  1、 数据库开发的难点


1) 用户的选择。

第一,选择其中一种数据库并与之绑定;第二,支持两种或多种数据库并维护针对每种数据库的实现;第三,只是用各种数据库都支持的功能。

2) 上面的任何一种选择都不理想。

收起
保险 · 2011-11-11
浏览1603
eric eric 系统运维工程师 某金融单位
 8、Oracle和DB2支持的分区特性一览表概念上相似,用法略有不同。另外也可以组合使用:  9、背后的深层次原因-转型问题1) 电信公司前期请了多加资讯公司做了可行性分析,对经营分析系统报以厚望,从上到下投入都很大。2) 项目进度要求时间紧,任务重。3) 技术人员情况刚从Oracl...显示全部

 8、Oracle和DB2支持的分区特性一览表

概念上相似,用法略有不同。另外也可以组合使用:

09595H922-3.jpg



  9、背后的深层次原因-转型问题

1) 电信公司

前期请了多加资讯公司做了可行性分析,对经营分析系统报以厚望,从上到下投入都很大。

2) 项目进度要求

时间紧,任务重。

3) 技术人员情况

刚从Oracle转型过来的,只接受过DB2入门级的培训,经验主义严重,不熟悉DB2设计技术,对使用DB2开发存在“恐惧”心理。

  二、从Oracle到DB2设计转型

  1、 术语对比


  2、 产品和工具对比



  3、 Oracle系统架构

1) Oracle System ID(非RAC架构)


一个Oracle SID一次只能访问一个数据库,“Instance”指内存和访问数据的后台进程组成,“Database”指用于存储信息的物理文件。

  4、 DB2系统架构


DB2服务器可以创建多个实例,每个实例可以同时访问多个数据库;每个实例中运行多个引擎派遣单元 Engine Dispachable Units(EDUs);每个实例有自己的配置(dbm cfg)。

收起
保险 · 2011-11-11
浏览1509
eric eric 系统运维工程师 某金融单位
4、PAT树 适用流行的优化工具1)什么是PAT树PAT:Problem Addressing Tree根节点用来指明性能问题分类;非叶节点用来存放监控和诊断信息;叶子节点给出了具体的优化方法。2)PAT方法学PAT方法学是一种系统化的数据库性能诊断和优化方法。  5、都是“热表”惹得祸1)怎样监控...显示全部

4、PAT树 适用流行的优化工具

1)什么是PAT树

PAT:Problem Addressing Tree

根节点用来指明性能问题分类;非叶节点用来存放监控和诊断信息;叶子节点给出了具体的优化方法。

2)PAT方法学

PAT方法学是一种系统化的数据库性能诊断和优化方法。

  5、都是“热表”惹得祸

1)怎样监控到的?

通过编目表syscat.tables和sysibmadm.snaptab,发现了活跃程度最高的前N张表,我们拿这钱N章表中ACC_ITEM来说明。

2)热表数据在32个分区分布极不均匀。

通过下面的语句发现表ACCA_ITEM在32个分区上数据分布极不均匀,下面是查找该表在 32 个节点上数据分布所使用的语句:

select DBPARTITIONNUM,SUM(DATA_OBJECT_L_SIZE) lszkb,
SUM(DATA_OBJECT_P_SIZE),pszkb, SUM(INDEX_OBJECT_P_SIZE) iszkb
from
TABLE
(SYSPROC.ADMIN_GET_TAB_INFO_V95('BI', 'DWD_ACC_OWE_ITEM')) AS T
GROUP
BY DBPARTITIONNUM
ORDER
BY DBPARTITIONNUM


3)表ACCA_ITEM的DDL定义

CREATE
TABLE “BI”.”ACC_ITEM”(
“BILLING_CYCLE_ID” VARCHAR(6),
“BILL_DTL_ID” DECIMAL(15,0),
“DEFAULT_ACCT_ID”DECIMAL(9,0),
“ACCT_ID” DECIMAL(9,0),
“USER_ID” DECIMAL(9,0),
“SVC_NUM” VARCHAR(64),
“AREA_ID” VARCHAR(3),

“ETL_TIME” TIMESTAMP,
“ETL_DATA_CYCLE” DATE)
DISTRIBUTE BY HASH(“USER_ID”)
INDEX
IN “TBS_INDEX”
)

这里的USER_ID作为Hash Key。

  6、原来是Hash Key搞错了

1) 怎么找到原因的?

首先要和表设计人员沟通,通过元数据库调查表之间的血缘关系,然后追踪了数据流(ETL工具使用Datastage),发现很多记录的user_id值为0,而user_id为hash key。这使得数据被hash到有限的几个分区中。

2) 怎么解决的?

使用该表另外字段ACCT_ID作为Hash key,数据在分区间做重平衡操作。

  7、Oracle和DB2在这个案例上有什么不同?

1)Oracle和DB2导致的不同结果

Oracle:倾斜的大数据分区位于共享磁盘上。

DB2:倾斜的大数据分区位于DPF节点上。

2)DB2数据库分区有什么特点?

多个数据库分区在一起并行工作来处理工作负载,提供了强大的线性扩展能力,通常被广泛应用在数据仓库中。

收起
保险 · 2011-11-11
浏览1578

提问者

eric
eric 6 19 38
系统运维工程师 某金融单位
擅长领域: 云计算服务器私有云
评论1072

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-09-22
  • 关注会员:1 人
  • 问题浏览:11720
  • 最近回答:2012-01-20
  • X社区推广