技术开发 频道

Oracle 向 DB2迁移:主要的流程与工具

  【IT168 技术】数据库迁移可以看作一个特殊的软件开发项目,与其他开发项目不同的是这个项目的需求是确定的,技术障碍较低,主要工作是代码编写和测试。对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。另一方面,数据库迁移项目的成功也主要依赖于客户与开发商的积极配合和有序组织。当然,企业数据库通常数据量都比较大,结构也比较复杂,如果完全通过手工来完成,那是一个不可想象的大工程。所以正确的步骤加合适的迁移工具也能达到事半功倍的效果。

  Oracle向DB2迁移的主要流程

  Oracle向DB2迁移一般来说遵循3大流程:迁移评估、模拟迁移、正式迁移。

  1、迁移评估

  全面的评估是迁移成功的一个关键要素,评估的总体目标是发现可能影响迁移过程的问题以便分配足够的资源来保证迁移取得成功。首先,是评估应用环境和应用程序,识别潜在的障碍;第二,您的 Oracle 数据库将在多大程度上适应 DB2 的硬数据;最后,分析 Oracle 数据库对象和过程,识别使用 DB2中不支持的那些特性的对象和过程。

  2、模拟迁移

  1)在进行模拟迁移前,我们必须先设计数据迁移的方案,一般设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。

  2)根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。

  3)根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

  3、正式迁移

  数据模拟迁移测试成功后,可以正式实施数据的迁移了。在这里介绍一种简单的测试方法,首先利用 DB2 兼容特性迁移 Oracle 应用,创建兼容模式 DB2 数据库。在 DB2 V9.7 上启用 Oracle 应用程序时,实例和数据库必须处于兼容模式。还建议调整舍入行为以匹配 Oracle。通过把重新验证语义(revalidation semantics)设置为 deferred_force,可以不按依赖次序部署对象。

  在 UNIX 系统上:

$ db2set DB2_COMPATIBILITY_VECTOR=ORA
$ db2set DB2_DEFERRED_PREPARE_SEMANTICS
=YES
$ db2stop force
$ db2start
$ db2 "
create db testdb automatic storage yes on /db2data1,
/db2data2,/db2data3 DBPATH ON /db2system PAGESIZE 32 K"
$ db2
update db cfg for testdb using auto_reval deferred_enforce
$ db2
update db cfg for testdb using decflt_rounding round_half_up
C:\
> db2 update db cfg for testdb using decflt_rounding round_half_up

  在Windows上:

C:\> db2set DB2_COMPATIBILITY_VECTOR=ORA
C:\
> db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
C:\
> db2stop force
C:\
> db2start
C:\
> db2 "create db testdb automatic storage yes on C:,D: DBPATH ON E: PAGESIZE 32 K"
C:\
> db2 update db cfg for testdb using auto_reval deferred_enforce
C:\
> db2 update db cfg for testdb using decflt_rounding round_half_up

  然后是将 Oracle 数据库对象和数据迁移到 DB2。DB2 9.7 提供的原生 Oracle PL/SQL 和 Oracle SQL 支持极大地简化了这一过程。现在我们先来看一个简单的示例,这个例子选自 Oracle 来演示 PL/SQL 中 CASE 语句的使用,例子如下:

set serveroutput on
Drop function Get_Grade3;
create or replace function Get_Grade3(score IN NUMBER) RETURN VARCHAR2 is
begin
-- use a Searched CASE Statement to find the Grade for the
-- score passed in as a parameter
CASE
WHEN score BETWEEN 80 AND 100 THEN return 'A';
WHEN score BETWEEN 65 AND 79 THEN return 'B';
WHEN score BETWEEN 50 AND 64 THEN return 'C';
WHEN score BETWEEN 40 AND 49 THEN return 'D';
WHEN score BETWEEN 0 AND 39 THEN return 'F';
--Comment the ELSE leg to generate the exception
--ELSE return 'Invalid score';
END CASE;
exception
when CASE_NOT_FOUND then
return 'Exception - Case Not Found for score - '|| score;
end Get_Grade3;
/
select Get_Grade3(-1) from dual
/
C:\
> db2 update db cfg for testdb using decflt_rounding round_half_up

  把这段代码保存在本地计算机的 D 盘下面为 casetest.sql,在 DB2 的 CLP plus 中运行一下,居然一点都不需要修改就运行成功了,运行的结果如下:

Oracle 向 DB2迁移:主要的流程与工具

  这说明 DB2 对 Oracle 的兼容性的支持已经达到了一个很好的程度了。但是并不是所有程序都可以这么幸运的无需要修改就能正确的运行的。为了能够更好的完成迁移工作,还是需要了解两者之间特性的范围,以便我们能够更好的进行修改工作。在这里就不做说明了,大家可以去网上找找。

  Oracle 向 DB2迁移工具

  1. IBM DB2 Migration Toolkit

  利用免费的 IBM DB2 Universal Database(UDB)Migration Toolkit(MTK)简化和改进向 DB2 UDB 的迁移工作。这个新的迁移实用程序提供了向导和易于使用的五步界面,这些有助于您快速地将现有的 Sybase、 Microsoft SQL Server和Oracle数据库对象转换到 DB2 通用数据库。使用 MTK,可以将数据类型、表、列、视图、索引、存储过程和触发器自动地转换成等价的 DB2 数据库对象。MTK 向数据库管理员(DBA)和应用程序程序员提供了使迁移任务自动化所需要的工具,而以前这些任务不但效率低下而且开销巨大。通过使用 MTK 中的以下特性,您可以减少停机时间、消除人为错误,以及降低人工和与传统数据库迁移相关联的其它资源消耗。MTK 可运行于 AIX、Linux、Solaris 和 Windows 操作系统上。

  2. IBM Data Movement Tool

  利用 DB2 兼容特性和 IBM 提供的免费数据迁移工具 Data Movement Tool,快速地将现有的 Oracle 数据库对象转换到 DB2 通用数据库。同时对应用中使用到的数据库访问语言以及接口进行转换,最终实现整个应用系统的完整迁移。

  3. IBM Optim Development Studio

  IBM Optim Development Studio,它为 Oracle、DB2 和 Informix 提供一个集成的数据库开发环境。Optim Development Studio 在开发和测试 SQL 和 XQuery 查询、存储过程、Web 服务和 Java 数据访问层方面将生产力提高了 50%,而且允许在不同或者相同的数据服务器中的数据对象包、存储过程、表、用户自定义函数、用户自定义类型、视图、模式等的复制粘贴。

  这三款工具都是来自于IBM官方的,大家有需要可以进去官方下载。

  总 结

  以上只是简单的介绍了下迁移的流程和常用的工具,总的来说,迁移过程是一个复杂的过程,中间可能出现很多意想不到的情况,遇到问题,先查资料寻求解决方法,要有细心和耐心!我们在做迁移时,一定要做好备份,测试工作。而迁移工具只是一个辅助作用,如果单靠迁移工具是远远不够的。

0
相关文章