级别: 初级 Hemant Bhatia (bhatiah@us.ibm.com), 软件工程师, IBM Nicholas Geib (njgeib@us.ibm.com), 软件工程师, IBM
2006 年 4 月 24 日 很长时间以来,免费的 Migration Toolkit (MTK) 都是从非 IBM 数据库迁移到 IBM 产品的一种强大的工具。2005 年 12 月,新版本的 MTK 发布了,其中包括了大量新功能。它支持两种新的目标数据库(Informix® Dynamic Server (IDS) 和 DB2® Universal Database™ (UDB) for z/OS®),支持从 Sybase SQL Anywhere 迁移到 IBM 数据库,并且包括对迁移附加 Oracle 数据类型的支持。本文着重介绍了这些新特性。
目录
了解 MTK V1.4 中的以下几个新特性:
将 Oracle/Sybase SQL Anywhere 迁移到 Informix Dynamic Server
本文的这一节描述迁移到 Informix Dynamic Server 时所遵循的 5 步过程。
在执行 5 步迁移过程之前,创建一个新项目,以 Oracle 或 Sybase SQL Anywhere 作为源,以 Informix Dynamic Server 作为目标。
步骤 1:指定源
MTK 支持直接从源数据库提取源对象,或者导入包含要转换的 SQL 的脚本。如果以 Informix Dynamic Server 作为目标,那么只能通过一个 JDBC™ 连接来提取源。在使用 MTK 从源数据库提取源对象之前,应确保系统 CLASSPATH 包含源 JDBC 驱动程序。
在本文中,您将从一个 Oracle 数据库中提取一个简单的表。如果 SQL 已经在一个文件中,那么可以通过导入该文件来转换 SQL。
如果是直接从源提取对象,那么在单击 extract 按钮后要提供必要的信息,以便连接到源。这里弹出的面板显示了来自正在访问的 Oracle 源数据库的信息。此时可以选择所要迁移的表,并将 DDL 提取到一个文件。目前,MTK V1.4 不支持将 Oracle Procedures/Functions、触发器和包迁移到 Informix。按照计划,未来的版本会支持将这些对象迁移到 Informix。
图 1. 源数据库提取面板
步骤 2:转换
将数据提取到文件之后,单击 Convert 选项卡。在这里可以查看被提取到文件的 Oracle 信息。通过单击 convert 按钮,可以将该脚本转换成能由 IDS 使用的脚本。在转换之前,可以通过单击 Global Type Mapping 按钮将 Oracle 数据类型的默认映射更改为任何被允许的 IDS 映射。Advanced Options 可用于更改转换后的输出的格式。通过 Set Context 按钮,用户可以选择一个包含转换文件时所依赖的信息的上下文文件。
MTK 转换完 Oracle 文件后,会生成一个 IDS(.ids)文件和一个报告(.rpt)文件。.ids 文件包含在转换期间从 Oracle DDL 语句转换而来的 IDS DDL 语句。报告文件则包含一个错误列表,这些错误是在转换期间发现的。用户可以通过转换完成后打开的 Refine 页面来查看这些文件。下一节将对此加以讨论。
图 2. Convert 面板
步骤 3:改进
通过 Refine 面板,用户可以查看转换得到的输出,找到错误消息,并更改转换后得到的文件。可以通过单击源(Oracle)或目标(IDS)选项卡来进行这样的更改。如果在这一步作出了更改,那么必须重复转换(Convert)步骤,以便使这些更改在转换得到的文件中生效。
图 3. Refine 面板
步骤 4:生成数据转换脚本
通过 Generate Data Transfer Scripts 面板可以生成用于提取数据的脚本,并且可以选择用于部署的客户机,您将通过该客户机将 SQL 脚本和生成的数据部署到目标服务器上。目前,MTK V1.4 为 Informix 目标生成的脚本只能使用 MTK GUI 进行部署。目前不支持使用生成的脚本进行手动的部署。可用于将脚本和数据部署到 Informix 目标的客户机有 JDBC 和 DBACCESS。如果计划使用 DBACCESS,那么需要在一台完成了一定环境设置、能运行 DBACCESS 的机器上运行 MTK。本文使用 JDBC 将 DDL 和数据部署到 Informix Dynamic Server。通过单击 Next 按钮,可以创建用于部署的文件。
图 4. Generate Data Transfer Scripts 面板
步骤 5:部署到目标
这是将数据库从源迁移到 Informix 目标过程中的最后一步。在这一步中,MTK 提供了将 DDL 部署到目标数据库、将数据提取到目标数据库和将数据装载到目标数据库的功能。
如果目标是 Informix,那么必须提供以下信息:
- 主机名:是 Informix 服务器被部署到的机器。
- 端口:Informix 服务器的端口号。
- 服务器名:数据库将被部署到的 Informix 服务器的名称。这与 Informix 服务器安装到的机器上的 INFORMIXSERVER 环境变量的值一致。
- 数据库名:DDL 和数据将被部署到的数据库的名称。目前 MTK 只支持部署到 Informix ANSI 数据库。
通过 Advanced options 按钮还可以指定 Informix 数据库的 DB_LOCALE 和 CLIENT_LOCALE。如果要创建一个新的数据库,或者要重新创建一个已有的 Infrmix 数据库,那么可以选择 (Re)create 选项。然后还必须指定 DDL 和数据将被部署到的 Informix 服务器上所使用的凭证。MTK 提供了将 DDL 部署到目标数据库、将数据提取到目标数据库和将数据装载到目标数据库的功能。
填充好必要的文本域后,单击 Deploy 按钮。这样数据就被部署到目标服务器。这时会生成一个检验报告,该报告用于检查是否存在与部署有关的错误。这份报告表明被部署到 Informix 目标数据库的源数据库对象的数量。
提示: 如果是使用 DBACCESS 来实现到 Informix 的部署,并且所使用的机器不是受信任的客户机,那么在部署过程中 MTK 会提示输入密码。这里提供的密码应该与在 Deploy 面板上的凭证中的密码相同。
图 5. Deploy to target 面板
目标数据库:DB2 UDB for z/OS
MTK V1.4 支持另一种新的迁移目标,DB2 UDB for z/OS。在此之前,为了迁移到这种 IBM 大型主机上的 DB2 UDB,需要使用一个单独的、beta 版的产品。现在 beta 时期已完满结束,IBM 可以将对从 Oracle 8i、9i 和 10g 迁移到 DB2 UDB for z/OS Version 8 的支持引入到 MTK V1.4 中。
与迁移到非大型主机系统上的 DB2 UDB 不同,当迁移到 DB2 UDB on z/OS 时,有很多独特的设置需求。DB2 必须配置成支持 Java™ 用户定义函数和过程,这就需要专门的工作负载管理器(WLM)支持。此外,大型主机上必须运行着一个 FTP 服务器。由于 z/OS 平台使用 EBCDIC 文件格式,而不是运行 Oracle 数据库的服务器上常见的 ASCII 文件格式,因而必须转换源数据格式。在数据部署步骤中,必要时 MTK 使用 z/OS FTP 服务器内置的 ASCII-EBCDIC 转换功能将数据转换成 z/OS 本地格式。而且,还必须对资源发现服务(RRS)进行适当的配置。详细信息请参考 DB2 UDB for z/OS 文档(参见 参考资料)。最后,与在非 z/OS 目标中一样,还必须在运行 MTK 的机器上编目 DB2 服务器。
迁移到 DB2 UDB for z/OS 的过程也类似地分为 5 步:1) 指定源,2) 转换,3) 改进,4) 生成数据转换脚本,5) 部署。不论选择哪种目标数据库,MTK 为步骤 1 到步骤 3 提供的用户界面是相同的。但是,在第 4 步和第 5 步中用户界面有所不同。让我们看看在迁移到 DB2 UDB for z/OS 时有什么不同之处。
生成数据转换脚本
下面的图 6 是 Generate Data Transfer Scripts 步骤中使用的选项卡的屏幕快照。您可以看到三个选项,用于选择将被提取的 Oracle 数据的位置。如果已经做好迁移的准备,那么选择将数据存储在 zSeries® 系统上(选项 1 或 3)。第 2 个选项的意思是提供表内容的一个本地拷贝。接下来,在导入到 DB2 之前,填充 root DSN,这关系到数据文件将被存储在 z/OS 机器上的哪个位置。必要时请与 z/OS 管理员联系,以便知道正确的值。然后单击 Create Scripts。
与迁移到 DB2 UDB for Linux®, UNIX®, and Windows® 相比,这个面板上的选项更少。MTK 总是通过 REPLACE 选项使用 LOAD 实用程序将数据装载到 DB2 UDB for z/OS。在 z/OS 上没有提供 IMPORT 实用程序。而且,由于 LOAD 要求将数据文件放在 EBCDIC z/OS 机器上,suoyi 在 Linux/UNIX/Windows 上下文中提供的 ASC 或 DEL 文件格式选项并不重要。
图 6. z/OS Generate Data Transfer Scripts 面板
部署到目标
迁移过程中的最后一步将进入如图 7 所示的选项卡。由于 DB2 UDB for z/OS 特有的设计,该选项卡上有很多新的文本域。输入 DB2 服务器的名称,该名称应该和本地编目及凭证中出现的名称一致。然后根据 z/OS 配置,指定至多两种不同的负责用户定义函数和存储过程的工作负载管理器。接下来,输入适当的 FTP 信息,尤其是卷(volume)名。通过单击 Advanced Allocations for Load,可以为 SYSUT1 和 SYSERR 之类的 LOAD 辅助文件指定非默认的卷。最后,勾选底下三个复选框的适当的组合,然后单击 Deploy 按钮。
图 7. z/OS Deploy to Target 面板
对从 Sybase SQL Anywhere 数据库进行迁移的支持
MTK V1.4 提供有限制的对将 Sybase SQL Anywhere version 9 (ASA) 数据库迁移到 Informix Dynamic Server 的支持。它还对将 Sybase SQL Anywhere version 9 数据库迁移到 DB2 UDB for Linux, UNIX, and Windows 数据库提供了有效的支持。从 Sybase ASA 迁移至 Informix 或 DB2 UDB for Linux, UNIX, and Windows 时所遵循的步骤与前面提到的步骤相同。当迁移到 Informix 时,只能使用 JDBC 从 Sybase ASA 数据库提取 DDL 和数据。如果以 DB2 UDB for Linux, UNIX, and Windows 作为迁移目标,则可以使用 JDBC 或 ODBC。
若要从 Sybase ASA 数据库提取 DDL 和数据,则必须安装 JConnect 5_2 或更高版本,并且系统 $PATH 和 $CLASSPATH 必须包含它的路径。
Oracle TIMESTAMP
MTK 1.4 的一个附加特性是对 Oracle 数据类型 TIMESTAMP 的支持。TIMESTAMP 是在 Oracle 9i 中引入的,它支持从 0 到 9 的可选精度范围。而且,TIMESTAMP 可以与以下两个子句一起使用: "WITH TIME ZONE" 和 "WITH LOCAL TIME ZONE"。
MTK 将任何精度的 Oracle TIMESTAMP 转换为 DB2 中精度为 6 的 TIMESTAMP。如果目标是 IDS,则 TIMESTAMP 被转换为精度为 5 的 DATETIME。不管对于何种目标,"WITH TIME ZONE" 和 "WITH LOCAL TIME ZONE" 子句的转换都是不受支持的。
参考资料 学习
获得产品和技术
讨论
作者简介  | |  | Hemant Bhatia 是 IBM Lenexa 实验室的一名软件工程师。他从事过 IBM Informix 4GL、Informix classic 数据库、DB2 Information Integrator 和 IBM Migration Toolkit 方面的工作。 |
 | |  | Nicholas Geib 是 IBM Lenexa 实验室的一名软件工程师,目前正从事 IBM Migration Toolkit 方面的工作。 |
对本文的评价
|