转载

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

简介

DB2 for i 和 DB2 for Linux, UNIX and Windows 有一些关键区别,例如,常用术语、数据存储架构和国家语言支持(NLS)映射。在使用 DataStage 建立从 InfoSphere Information Server 到 DB2 for i 的连接时,这些差异往往会导致概念上的混淆。

连接问题通常很容易对付。然而,在涉及 Information Server 连接到 System i 的问题时,连接问题可能颇具挑战性。有些用户的结论是,连接问题是 Information Server 的功能缺陷。但更多的时候,它其实是一个理解偏差。

随着近年来 Information Server 作为一个主要 ETL 工具被广泛采用,使用 Information Server 连接到 DB2 for i 的用户数量也越来越多。本文旨在为 Information Server 管理员、开发人员、技术架构师、系统管理员,以及 Information Server 和 System i 的所有其他用户提供一个关于从 Information Server 连接到 DB2 for i 的简单分步说明,帮助克服理解偏差。

了解 Information Server 和 DB2 for System i

简介 DB2 for System i

DB2 for i 是一个在 IBM System i(以前称为 iSeries® 和 AS/400®)操作系统中完全集成的关系数据库管理系统。这是 DB2 for i 和 DB2 for Linux, UNIX and Windows 之间的关键区别。DB2 for Linux, UNIX and Windows 是一个由操作系统托管的应用程序。事实上,DB2 for i 被纳入操作系统,使变成可扩展、高性能和可伸缩的。它遵守许多行业标准,同时保持较低的总拥有成本。

为了允许远程访问 DB2 for System i,在 System i 中必须启用分布式关系数据库架构(DRDA)功能,而且还需要使用 ADDRDBDIRE 命令定义本地关系数据库。以下各小节将介绍如何执行这些任务。

InfoSphere Information Server 架构简介

IBM InfoSphere Information Server 是一个信息管理产品套件,包括 Business Glossary、Business Glossary Anywhere、FastTrack、Information Analyzer、Metadata Workbench、DataStage、QualityStage、Information Services Director,等等。InfoSphere Information Server 的一个关键优势是其共享的基础架构。这实现了各个模块之间的元数据共享,并使得数据集成变得更容易。InfoSphere Information Server 包括四个层次:

  • Repository 层(一个数据库,比如 DB2、Oracle 或 SQL Server)
  • Services 层(WebSphere Application Server)
  • Engine 层(DSEngine、PXEngine)
  • Client 层

从高层次的角度来看,InfoSphere Information Server 的架构如图 1 所示。

图 1. InfoSphere Information Server 架构

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

从 Information Server 连接到 DB2 for System i

在 Information Server 中,有两个方法可用于访问 DB2 for System i:

  • DataDirect ODBC :通过成功的安装,DataDirect ODBC 驱动程序被内置到 Information Server Engine 层。DB2 Wire Protocol Driver 被指定用于从 DataStage 作业访问 DB2 for System i。
  • 在 Information Server Engine 层上的 DB2 客户端 :DB2 Connect 必须安装在 Information Server Engine 上。要使用这种访问方法,在 DataStage 作业中应采用 DB2 UDB API stage。

回页首

从 DB2 for System i 获取必要信息

访问 DB2 for System i 需要以下信息:

  • IP 地址:DB2 for System i 的 IP 地址。
  • 用户名:在 System i 上用于访问 DB2 for System i 的用户名。
  • 密码:用户的密码。
  • TCP 端口:DRDA 服务端口。一般情况下,端口号是 446。为了获得端口,可从您的 System i 命令界面运行 WRKSRVTBLE 命令,并找到包含关键字 "drda"(表示服务名称)和 "tcp"(表示协议)的行,如图 2 所示。

    图 2. WRKSRVTBLE 命令输出

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  • 位置:在 System i 上您想访问的关系数据库的名称。为了获得位置名称,从您的 System i 命令界面使用 DSPRDBDIRE 命令,然后找到包含关键字 "*LOCAL" 的行。该条目的名称就是位置。在图 3 的示例中,DBONB01 是位置的名称。

    图 3. DSPRDBDIRE 命令输出

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

回页首

使用 ODBC 连接到 DB2 for i

从 Information Server DataStage 访问 DB2 for System i,这是最常用的方法,因为它不需要为 DB2 Connect 支付额外的费用,并且相对易于设置。

在 Windows 环境中设置数据源

由于和 Information Server 捆绑在一起的 ODBC 驱动程序是 32 位的,所以您需要使用 32 位的 ODBC Administration Tool 来建立 System Data Source。如果您在一个 64 位的 Windows 环境中,请参见 Microsoft Support 文档 942976(参阅参考资料)。

  1. 打开 Control Panel 并选中 System and Security > Administrative Tools > Data Sources(ODBC) 。选择 System DSN 选项卡,并单击 Add 按钮。

    图 4. 在 Windows 上的 ODBC Data Source Administrator

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  2. 选中 IBM DB2 Wire Protocol

    图 5. DB2 Wire Protocol 驱动程序

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  3. 填写在上一节中得到的 Data Source Name、IP Address、TCP Port 和 Location Name 信息。单击 Test Connect 确保可以成功建立连接。

    图 6. ODBC DB2 Wire Protocol 驱动程序安装

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

在 UNIX 或 Linux 环境中设置数据源

在 UNIX 和 Linux 环境中,ODBC 连接从 dsenv 继承其环境,并寻找 .odbc.ini 文件作为其运行时环境。在 UNIX 或 Linux 上设置的步骤:

  1. 确保在 dsenv 中的信息是正确的。

    默认情况下,在 dsenv 中,ODBC 连接的环境设置是在安装过程中设置的。如果 dsenv 没有被修改,那么您的 dsenv 文件看起来应该类似于清单 1。

    清单 1. 在 dsenv 文件中的示例环境变量的列表

    ODBCINI=$DSHOME/.odbc.ini; export ODBCINI … LD_LIBRARY_PATH=`dirname $DSHOME`/branded_odbc/lib …

    请注意,不同的 UNIX 平台上的库路径环境变量是不同的:

    • Solaris:Linux – LD_LIBRARY_PATH
    • HP-UX:SHLIB_PATH
    • AIX:LIBPATH
  2. 在 .odbc.ini 文件中创建一个访问条目。

    默认情况下,.odbc.ini 文件在 $DSHOME 目录下(或指向 dsenv 中的 $ODBCINI,如步骤 1 中所讨论的)。备份 .odbc.ini 文件,然后用文本编辑器打开它。在这个文件中有一个 DB2 Wire Protocol 的示例。复制并粘贴这个示例,以创建一个新条目,并填写 Location、LogonID、Password 和 TcpPort 的信息。清单 2 显示了一个示例。

    清单 2. 为 System i 设置 DataDirect ODBC 的示例

    [TORI6B01] Driver=/opt/IBM/InformationServer/Server/branded_odbc/lib/VMdb225.so Description=DataDirect DB2 Wire Protocol Driver AddStringToCreateTable= AlternateID= Collection= Database= DynamicSections=100 GrantAuthid=PUBLIC GrantExecute=1 IpAddress=9.26.103.178 IsolationLevel=CURSOR_STABILITY Location=Location_name LogonID=User_name Password=Password Package=DB2 package name PackageOwner= TcpPort=446 WithHold=1

    方括号中的条目名称可以是任意名称。不过,我们建议您仍然使用 Location 名称,以便于识别。

  3. 修改 uvodbc.config 文件。

    在.odbc.ini 文件中创建条目后,对于需要访问数据源的每个项目,您需要在每个项目目录下的 uvodbc.config 文件中为数据源名称添加一个条目。清单 3 显示了一个示例。

    清单 3. 在 uvodbc.config 中的条目示例

    DBMSTYPE = UNIVERSE network = TCP/IP service = uvserver host = localhost <TORI6B01> DBMSTYPE = ODBC

    请注意,尖括号之间的数据源名称必须与 .odbc.ini 文件中的方括号之间的数据源名称相同。在前面的示例中,使用了 TORI6B01。

  4. 在 DB2 for i 上创建一个绑定包。

    为了让 DB2 Wire Protocol 能够正常工作,必须在 DB2 for System i 上创建一个 DB2 绑定包。绑定实用程序位于 ../branded_odbc/bin 目录。所用的语法是:

    Bindxx data_source_name

    备注:xx 是绑定实用程序的版本。导航到 ../branded_odbc/bin/ 目录,您应该能够找到捆绑的 ODBC 驱动程序自带的正确版本的绑定。清单 4 提供了一个示例。

    清单 4. 绑定包示例

    [root@rhel55iis87 bin]# ./bind25 TORI6B01 User Name:TEST Password:******** SecurityMechanism:'' Creating packages ...Packages created and bound.

您可以使用示例程序来测试数据源的连接。示例程序在 ./branded_odbc/sample 目录下。清单 5 提供了一个示例。

清单 5. 使用 ODBC 驱动程序测试连接的示例

[root@rhel55iis87 example]# pwd /opt/IBM/InformationServer/Server/branded_odbc/samples/example [root@rhel55iis87 example]# ./example ./example DataDirect Technologies, Inc. ODBC Example Application.  Enter the data source name :TORI6B01  Enter the user name        :TEST  Enter the password         :PASSWORD  Enter SQL statements (Press ENTER to QUIT) SQL>

当您看到显示 “Enter SQL statements (Press ENTER to QUIT)” 消息,并且出现 SQL 界面时,这表示使用 ODBC 连接到数据源已经成功。

导入 ODBC 表定义

  1. 在建立 ODBC 连接后,登录到 Information Server Designer 客户端。在 Import > Table Definitions > ODBC Table Definitions… 中,从下拉列表选中 DSN 并输入用户名和密码,如图 7 所示。

    图 7. 导入 ODBC 表定义 - 1

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南 单击 OK
  2. 在下一个窗口中,选择您想导入的表。

    图 8. 导入 ODBC 表定义 - 2

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

使用 ODBC Connector、ODBC Enterprise 或 DRS stage 访问 DB2 for i

您可以使用导入的表定义来设计 DataStage 作业,在 DB2 for i 上使用 ODBC Connector、ODBC Enterprise或 DRS stage 读取或写入一个表。下列步骤使用了 ODBC Connector stage。

  1. 从 ODBC Connector 开始。单击 Load

    图 9. ODBC Connector

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  2. 加载 ODBC 表定义。从 Table Definitions 资源管理器视图选择中 ODBC ,选择数据源名称,然后选择表名称。

    图 10. 表定义

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  3. 选中您想使用的列,将它们移动到 Selected columns 窗格。

    图 11. 选中列

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  4. 下一个屏幕(图 12)显示列详细信息。

    图 12. 列详细信息

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  5. 定义通信详细信息。在 ODBC Connector 屏幕中,在 Properties 选项卡上定义详细信息。在 Connection 下,定义您的数据源、用户名和密码。

    图 13. ODBC Connector 详细信息

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  6. 从 InfoSphere DataStage Designer 运行 DataStage 作业。

    图 14. 完整的作业运行

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

前一个示例适用于来自 DB2 for i 中的表的读取操作。检查确认是否已收到正确的输出。将数据写入到 DB2 for i 非常相似。最重要的事情是确保元数据(模式)与来自输入的目标表相同。

回页首

使用 DB2 connect 连接到 DB2 for i

DB2 Connect 或 DB2 Enterprise Server Edition 是在 Information Server Engine 层上访问 DB2 for System i 的必要条件。 DB2 Connect 或 DB2 Enterprise Server 的安装不在本文的讨论范围之内。不过,您可以参考 IBM DB2 Information Center 了解具体的的详细信息(参阅参考资料以获得相关链接)。

检查是否已在 Information Server Engine 层上安装了 DB2 Connect 或 DB2 Enterprise Server

检查是否已安装 DB2 Connect 或 DB2 Enterprise Server:

  • Windows 平台: 打开一个 Windows 命令提示符,更改到 DB2 安装目录(通常是 SQLLIB)下的 DB2 BIN 目录,然后执行 db2licm -l 命令。图 15 提供了一个示例。

    图 15. 在 Windows 平台上检查 DB2 产品:

    从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南
  • UNIX/Linux 平台: 请向您的 DB2 DBA 咨询在 Information Server Engine 层机器上安装的 DB2 实例的名称。以 DB2 实例所有者的身份登录到 Information Server Engine 层机器,并运行 db2licm 检查 DB2 实例是 DB2 Connect 还是 DB2 Enterprise。清单 6 提供了一个示例。

    清单 6. 在 UNIX/Linux 上检查 DB2 产品的示例

    # db2licm -l Product name:                     "DB2 Enterprise Server Edition" License type:                     "Restricted" Expiry date:                      "Permanent" Product identifier:               "db2ese" Version information:              "9.7"

为 System i 创建一个 DB2 节点

确认作为先决条件的 DB2 Connect 组件安装后,您可以为 System i 编制目录,以便为 System i 创建一个 DB2 节点,建立从 DB2 Connect 到 System i 的连接。清单 7 显示了相关语法。

清单 7. 创建 DB2 节点的语法

db2 catalog tcpip node Node_Name remote IP_Address server Port

命令参数:

  • Node_Name :将被编目的节点的本地别名。在 Information Server Engine 层机器上,该名称可以是一个任意名称,并用于识别节点。
  • IP_Address :DB2 for System i 所在的 i Series 机器的 IP 地址。
  • Port :DB2 for System i DRDA 服务端口,一般为 446,或在 “从 DB2 for System i 获取必要信息” 中获得端口号。

例如:

清单 8. 创建 DB2 节点的示例

$db2 catalog tcpip node TORI6B01 remote 9.26.103.178 server 446 DB20000I  The CATALOG TCPIP NODE command completed successfully. DB21056W  Directory changes may not be effective until the directory cache is  refreshed.

编目到 System i 上的目标数据库

下一步是对 DB2 for i 上的数据库进行编目,以便对其进行访问。清单 9 显示了相关语法。

清单 9. 数据库编目的语法

db2 catalog db DB_Name_on_System_i as DB_Alias_on_Local at node Node_Name  authentication Authentication_Mode

命令参数:

  • DB_Name_on_System_i :System i 上的数据库名称,这是在 “从 DB2 for System i 获取必要信息” 中获得的 Location Name。
  • DB_Alias_on_Local :在本地系统上的数据库别名。请注意,这个别名用于对 DB2 for System i 上的目标数据库(Location)进行编目后的数据库连接。如果您使用了 Location 名称以外的别名,那么在从 Information Server 中的 DB2 Connect 连接到 DB2 for System i 上的目标数据库(Location)时,必须使用这个别名,而不是 Location 名称。
  • Node_Name :该名称必须与在 "为 System i 创建 DB2 节点" 中为 System i 创建 DB2 节点时所用的 Node_Name 相同;
  • Authentication_Mode :默认的身份验证模式是服务器。

例如:

清单 10. 对 DB2 for i 数据库进行编目的示例

$db2 catalog db DBONB01 as DBONB01 at node TORI6B01 authentication server DB20000I  The CATALOG DATABASE command completed successfully. DB21056W  Directory changes may not be effective until the directory cache is  refreshed.

连接到 DB2 for i

对目标数据库编目成功后,您应该能够连接到目标数据库。清单 11 显示了相关语法。

清单 11. 连接数据库的语法

db2 connect to DB_Alias_on_Local user System_i_user_name using Password_for_System_i_user

命令参数:

  • DB_Alias_on_Local :与在 "对 System i 上的目标数据库进行编目" 中创建的 DB_Alias_on_Local 相同。
  • System_i_user_name :用于访问在 DB2 for System i 的 Location 的用户名。此用户必须具有目标 Location 上的读取和写入权限。
  • Password_for_System_i_user :System i 的用户密码。

例如:

清单 12. 连接到 DB2 for i 的示例

$db2 connect to DBONB01 user TEST using PASSWORD  Database Connection Information   Database server        = OS/400 6.1.0  SQL authorization ID   = TEST  Local database alias   = DBONB01

Information Server 的环境设置

在该场景中,Information Server 使用 DB2 Connect 连接到 System i 上的 DB2 数据库。因此,DB2 环境对于 Information Server 必须是可读的。

在 Windows 环境中,Information Server 从系统环境获得 DB2 环境信息。在安装 DB2 Connect 或 DB2 Enterprise 服务器时,此安装会在 Windows System Environment Variables > System Variables 中创建条目。不过,您可以仔细进行检查,以验证 DB2 库路径的设置是否正确。

图 16. 检查 Windows 系统变量

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

在 UNIX 或 Linux 环境中,Information Server 继承了来自 dsenv 的环境、项目环境和用户登录环境。我们强烈建议从 dsenv 设置 DB2 Connect 环境,以避免不必要的混淆。

DB2 Connect 的 Library 路径必须在 dsenv 中进行设置。清单 13 提供了一个示例。

清单 13. UNIX/Linux 环境变量示例

… export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/IBM/db2/V9/lib64 …

清单 13 来自 Linux 环境。请注意,在不同的 UNIX 平台上,库路径环境变量是有所不同的:

  • Solaris 和 Linux:LD_LIBRARY_PATH
  • HP-UX:SHLIB_PATH
  • AIX:LIBPATH

在修改 dsenv 环境后,必须重新启动 Information Server DataStage 引擎,让修改生效。

导入 Plug-in Meta Data 表定义

现在,您应该能够连接到 DB2 for i 上的数据库。登录到 Information Server Designer 客户端。从 Import > Table Definitions > Plug-in Meta Data Table Definitions… 选择 DSDB2

图 17. 导入 Meta Data 表定义 - 1

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

单击 OK 。在下一个窗口中,从下拉列表中选择 Server Name ,输入 User Name 和 Password,并选中 Tables 和 Fully Qualified Table Names 复选框。

图 18. 导入 Meta Data 表定义 - 2

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

单击 Next 并选中您想导入的表。

图 19. 导入 Meta Data 表定义 - 3

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

使用 DB2 API stage,DataStage 作业读取和写入 DB2 for i 上的数据库

通过 DB2 API stage,您可以使用导入的表定义,从 DataStage 作业读取或写入在 DB2 for System i 上的表。

图 20. DB2 UDB API stage - Stage General

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

图 21. DB2 UDB API stage - Output General

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

图 22. DB2 UDB API stage - Load Columns

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

图 23. DB2 UDB API stage - Select Columns

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

图 24. DB2 UDB API stage - Output Columns

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

备注:当您尝试查看表中的数据时,可能会看到下面的错误。通过从 Output > Columns Tab(如图 24 所示)删除所有派生物,可以解决这个错误。

图 25. 查看数据时遇到的错误

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

图 26. 删除所有派生物

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

运行作业。

图 27. 完整的作业运行

从 InfoSphere Information Server 连接到 DB2 for i 的完整连接指南

先前的示例是从 DB2 API stage 执行读操作。不过,将数据写入到 DB2 for i 与此非常相似。必须牢记的惟一一点是,元数据(模式)与来自输入的目标表相同。

回页首

结束语

从 Information Server 连接到 DB2 for i 不应该是一项复杂的任务。正如本文所讨论的,要成功解决连接问题,最重要的事情是安装先决组件,并正确设置环境。

正文到此结束
Loading...