中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > DB2 > 配置
如何在DB2上为AIX5L设置unixODBC
作者:佚名 时间:2005-08-08 10:18 出处:互连网 责编:小渔
              摘要:IBM 支持开放源代码:如何在DB2上为AIX5L设置unixODBC

Artis Walker

技术顾问, IBM
2004 年 4 月

该系列文章强调了开放源代码软件在 IBM 平台上的可操作性。本文介绍了 AIX5L 上用于 DB2 UDB 8.1 的 unixODBC。一步步地指示了如何设置在 AIX5L 系统上连接 DB2 UDB 8.1 数据源的 unixODBC Driver Manager,从而进一步扩展了开放源代码的功能。

简介

开放源代码软件是一种观念,而这种观念最终已经成为了现实。尽管一些竞争者认为这是一种引起混乱的技术,但该技术的稳步发展已经超过二十年了。IBM 是支持开放源代码团体(Open Source Community)的一个行业领先者。例如,1998 年 6 月中旬,IBM 就选择了开放源代码的 Apache webserver 来支持和绑定其 WebSphere 套件。从此,IBM 就实实在在地履行了对于开放源代码的承诺,从促进 Linux 内核开发,到将 Linux 作为 IBM 所有高端 pSeries eServer 上的主要操作系统之一。

ODBC 是一种开放的规范,最初是由 Microsoft 在 20 世纪 90 年代初期开发,用于提供从可预测的 API 到通用数据源的访问。多年以来,该规范已经逐步发展成为应用程序开发人员用以访问数据源的实际行业标准。它支持应用程序和关系数据库管理系统(Relational Database Management Systems,RDBMS)之间的无缝连接和通信。在一个典型的 ODBC 环境中,Driver Manager 提供应用程序用以运行结构化查询语言(Structured Query Language,SQL)的接口,并动态加载 RDBMS 应用程序需要连接的驱动程序。在 DB2 中,提供了一个服从 ODBC 的驱动程序。该驱动程序十分灵活,既支持 Driver Manager 已有的环境(例如 unixODBC),又可由无 Driver Manager 的应用程序层动态加载它。

unixODBC 和 DB2

在支持开放源代码的过程中,IBM/DB2 明白,强制开发人员将应用程序修改为直接加载预先打包的服从 ODBC 的驱动程序(即 DB2 CLI)是不公平的。大多数开发环境使用 ODBC Driver Manager 来加载合适的驱动程序。该管理器给他们提供了通过连接源的 ODBC 驱动程序来连接任何数据源的灵活性。在开放源代码社区中,ODBC Driver Manager 的选择就是 unixODBC。在 DB2 环境中,必须使用 DB2 CLI。DB2 CLI 十分灵活,既可以充当 ODBC Driver,也可以充当 ODBC Driver Manager,前者允许它被附加在 unixODBC Driver Manager 中。下图展示了 DB2 的特定环境和带有 unixODBC 的环境的不同。

对于完全在 DB2 特定环境中操作并需要利用数据源的所有功能的应用程序,DB2 CLI 环境是十分理想的。应用程序利用 DB2 CLI这个服从 ODBC 的驱动程序来访问数据源。但是,扩展该模型以用于其他数据源则可能需要重新编译应用程序。在 ODBC Driver 环境中,实际上不存在重新编译。开发人员可以在 unixODBC Driver Manager 中融入必要的 DB2 驱动程序,且不必打乱应用程序层。该环境极其灵活,并且允许容易地将 DB2 插入任何现有的 RDBMS 环境中。

系统需求

 

  • AIX5.1 或更高版本。
  • DB2 UDB Version 7.1 或更高版本。
  • unixODBC Version 2.50.3 或更高版本。

 

如果不使用 GNU C/C++:

  • Visual Age C/C++(VACPP)Version 5.0 或更高版本。

 

如何为 AIX5L 设置 unixODBC Driver Manager

unixODBC 在 32 位和 64 位 AIX 环境中都经过了测试。可从 http://www.unixodbc.org下载其源代码。目前,可获得 gzip、tar 两种格式。这意味着您必须:

  1. 在您可以创建文件和目录的地方下载 unixODBC*.tar.gz 文件。
  2. gunzip unixODBC*.tar.gz。这将创建一个 unixODBC*.tar。
  3. tar -xvf unixODBC*.tar。创建源代码。

 

unixODBC 利用 GNU autoconf 进程来进行安装。要进行安装,您仅仅需要运行下列命令:

  1. ./configure (构建环境配置工具)
  2. make
  3. make install

 

配置工具

默认情况下,配置工具搜索 GNU 编译器来构建 unixODBC,并且配置该构建来将其安装在 /usr/local 中。可从 http://www.ibm.com/developerworks/views/linux/downloads.jsp下载 GNU 编译器。但是,可以修改 unixODBC 的安装位置。要修改安装位置,请用 prefix 选项运行 configure


            ./configure --prefix=<preferred location>
            

通过运行下列命令,您可以看到所有的配置选项:


            ./configure --help
            

VisualAge C++ 需求

在 AIX 下,您可以用 VisualAge C++ Compiler(VACPP),Version 5.0 或更高版本来构建 unixODBC。当用 VACPP 进行构建时,您必须调用支持线程的编译器,并且通过发出下列命令显式地禁用 GUI 和 DRIVER 支持:


            ./configure --disable-gui --disable-drivers CC=xlc_r CXX=xlC_r
            

AIX 安装后需求

一旦建立了 unixODBC 库,就要在 prefix 选项所指定的位置中创建四个目录,prefix 变量的默认值为 /usr/local.:

  1. <preferred location>/lib:包含 unixODBC 库。
  2. <preferred location>/etc:包含 ODBC 配置 INI 文件。
  3. <preferred location>/include:包含必要的 unixODBC 头文件。
  4. <preferred location>>/bin:包含用以测试 unixODBC 到数据库连通性的有用工具。

 

在 AIX 上创建新实例的过程中,DB2 将 CLI/ODBC 驱动程序的副本放置到数据库实例目录中。

  • DB2INSTANCE_HOME>/sqllib/lib/libdb2.a(静态归档文件)

然而,unixODBC Driver Manager 将动态地加载 DB2 驱动程序,这意味着必须从该驱动程序 1提取共享对象。为此,要发出下列命令:


            cd <DB2instance_home>/sqllib/lib
            ar -x libdb2.a
            

这将产生 shr.o。为了维护一致性,将该文件重新命名为 libdb2.so。

1注意,在 DB2 安装目录(Version 7.1:usr/lpp/db2_07_01/lib)中找到的 db2.o 是与 DB2 版本 8 之前的一些版本一起发布的。db2.o 是一个可以使用的可链接共享对象,因而不必从 libdb2.a 中提取共享对象。

用 DB2 驱动程序注册

为了与 DB2 进行通信,unixODBC 必须用 DB2 驱动程序注册自己。为此,要进入 <preferred location>/等,并修改 odbc.ini 和 odbcinst.ini 文件,如下面的例子所示。这两个示例系统 .ini 文件建立到 DB2 SAMPLE 数据库的连接,并打开了跟踪(tracing):


            User INI file (odbc.ini)
            [SAMPLE]
            Description=Sample Database
            Driver=DB2
            User INI file (odbcinst.ini)
            [DB2]
            Description=DB2 ODBC Driver
            Driver= cd <DB2INSTANCE_HOME>/sqllib/lib/libdb2.so
            Fileusage=1
            Dontdlclose=1
            [ODBC]
            Trace=Yes
            Tracefile=<MY LOG LOCATION>/odbc_trc.log
            

验证连通性

为了验证 unixODBC Driver Manager 能够连接 odbc.ini 文件中所定义的“Sample 数据库”,要使用“isql”工具。虽然该工具是计划用于执行 SQL 的,但它对于验证到第三方数据源(本例中为 DB2)的连通性十分理想。为了验证连通性,请运行下列命令:


            cd <preferred location>/bin
            export DB2INSTANCE=<instance owner>./isql sample <UID> <PSWD>
            

如果 isql 命令成功了,它就会连接数据源,并且立即带您进入一个运行常规 SQL 命令的 shell 中(见下面的屏幕快照)。如果没有成功并且出现了 SQLConnect 错误,这通常是未正确设置好系统 .ini 文件的结果。该情况下,您必须改正错误并且重新运行该命令。

以上查询应该返回一系列的销售记录。如果出现了错误,您就应该分析跟踪日志、修复错误并重新执行该查询。一旦一切都毫无错误地运行,您就完成了该工作。此时,就成功设置了 unixODBC。您的应用程序随后将连接的数据源就只要添加到 odbcinst.ini 文件中。

定制 DB2 行为

可以通过由系统 .ini 文件(odbc.ini 和 odbcinst.ini)向数据库传递必要的关键字和值组合来定制 DB2 ODBC 驱动程序行为。odbc.ini 文件将包含该系统上可获得的所有 ODBC 驱动程序。odbcinst.ini 文件将包含用于连接的所有可用的 DSN(Data Source Name)。可以在 odbcinst.ini 中设置每个 DSN 的配置值来更改它的行为。关于那一系列的关键字和值,请进入 http://www.unixODBC.org并查阅手册“unixODBC without the GUI”。

有时候为了从 ODBC 获得优先选取的数据库行为,需要使用特定于数据源的参考资料。在 DB2 中,您可以使用 db2cli.ini 来定制 DB2 特定数据库的行为。db2cli.ini 支持用户将配置值传递给在 odbcinst.ini 文件中无效的 DB2 DSN。关于可用于 db2cli.ini 的关键字及其有效值的列表,请查阅 Call Level Interface Guide and Reference,Volume I,Version 8(SC09-4849-00)。db2cli.ini 位于 <DB2INSTANCE>/sqllib/cfg。在创建实例的过程中,DB2 在那里放置了一个示例副本。下面的示例 db2cli.ini 为 DB2 示例数据库设置 CurrentSchema 值。


            [DB2 Sample Database]
            dbalias=sample
            autocommit=0
            CurrentSchema = DB2INST1
            [COMMON]
            TRACE=1
            TRACEFILENAME=/<MY LOG LOCATION>/db2dvr_trace
            TRACEFLUSH=1
            

还要注意,已经打“开”了跟踪。在 DB2 层解决特定的 DB2 故障时,这可能是有用的。

结束语

本文通过逐步指示如何在 AIX5L 上设置 unixODBC,演示了 IBM 是如何支持开放源代码社区的。此外,还指示了如何用 VACPP 构建 unixODBC。这并不暗示 DB2 的特定解决方案要次于使用 unixODBC Driver Manager 的解决方案。相反,本文是为那些需要灵活地将 DB2 合并到现有 ODBC Driver Manager 环境中的开发人员,以及那些要求需要 DB2 的灵活实现功能的开发人员而撰写的。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有