分类: C/C++
2010-07-20 11:42:11
The IBM® DB2® Driver for ODBC and CLI is not part of the DB2 Client or the DB2 Runtime Client. It is available to download from the internet, and it is on the DB2 Version 9 install CD.
or
The driver is in a compressed file called “ibm_data_server_driver_for_odbc_cli.zip” on Windows® operating systems, and “ibm_data_server_driver_for_odbc_cli.tar.Z” on other operating systems.
\db2\ \clidriver
aix
hpipf
hpux
linux
linux390
linux64
linuxamd64
linuxppc
sunos
Windows
/db2/Windows/clidriver/ibm_data_server_driver_for_odbc_cli.zip
/db2/aix/clidriver/ibm_data_server_driver_for_odbc_cli.tar.Z
/db2/linux/clidriver/ibm_data_server_driver_for_odbc_cli.tar.Z
DB2 数据库的客户机连通性选项在 DB2 V9 之后引入了新的轻量级驱动程序 DB2 CLI Driver(有时被称为 Thin Client),它为使用 CLI API 的应用程序提供运行时环境,降低了分布式企业应用中 DB2 客户机维护成本。本文详细给出了 DB2 CLI Driver 的工作原理,并通过对比新旧客户机在 SAP 系统中的使用方法,进一步说明了采用 DB2 CLI Driver 在大规模企业应用中的优势。
IBM DB2 for Linux, Unix, and Windows 已经广泛应用在企业生产和管理的各个领域。由于连接 DB2 数据库的应用程序的需求不同,因此,DB2 提供了一系列不同的 DB2 客户机,它允许 DB2 客户端应用程序连接到 DB2 数据库服务器。
随着 DB2 版本从 V8 发展到 V9,DB2 客户机也不断的进行演变。 DB2 客户机提供了从标准部署,轻量级内核,以及指纹(fingerprint)级别的不同的连接方案。表 1 中列出了 IBM DB2 for Linux, Unix, and Windows 在 V8,V9.1,V9.5 所具有的不同连接方式。
DB2 V8 | DB2 V9.1 | DB2 V9.5 | SAP Term |
Application Development Client / Administration Client | DB2 Client | IBM Data Server Client | DB2 Client |
Run-Time Client | DB2 Runtime Client | IBM Data Server Runtime Client | DB2 Runtime Client |
N/A | IBM DB2 Driver for ODBC and CLI | IBM Data Server Driver for ODBC and CLI | DB2 CLI Driver |
Universal Driver for SQLJ and JDBC | IBM DB2 Driver for JDBC and SQLJ | IBM Data Server Driver for JDBC and SQLJ | DB2 JDBC Driver |
|
在 DB2 V8 的所有客户机中,尽管 Run-Time Client 占用资源较少。但是实际运行时仍然会占用较大的内存资源和磁盘空间。并且,当客户期望连接到 DB2 数据库时,他需要在其不同的客户机上分别安装 DB2 Run-Time Client 。因此,Run-Time Client 并不能满足那些移动用户的需要,并且它不易于应用程序的灵活部署。
虽然在 DB2 V8.2 版本中引入了基于 Windows 平台的 Run-Time Client Lite 。 Run-Time Client Lite 比 Run-Time Client 占用的内存资源要小,但是它不支持客户机迁移,也不能和其他的 DB2 客户机并存,影响了它的应用范围。
因此,在 DB2 V9 中引入了一种新的客户机驱动程序— DB2 Driver for ODBC and CLI,它是为 ODBC(Open Database Connectivity)和 CLI(Call Level Interface)应用程序添加的一个轻量级的驱动程序。
与其他的客户机相比,它占用更小的系统资源,并且具有更加灵活的部署方式。
|
DB2 CLI Driver 在 DB2 V9.1 版本中的全称是 DB2 Driver for ODBC and CLI 。顾名思义,其为使用它的应用程序提供了 2 种不同形式的数据库连接方式。
不同的是,在 DB2 V9.5 版本中,这种通过 ODBC 或 CLI 方式访问的驱动被称作 Data Server Driver for ODBC and CLI 。
由于本文的重点在于阐述 DB2 CLI 方式在大规模企业应用中的优势,为下文表述清晰,因此将通过 CLI 客户机进行连接的方式称为 DB2 CLI Driver 连接方式,而通过 ODBC 进行连接的方式称为 DB2 ODBC Driver 连接方式。
DB2 CLI Driver 作为一种连接 DB2 数据库的轻量级的可调用 SQL 接口,为 C/C++ 的应用程序访问 DB2 数据库提供了执行 SQL 语句的功能接口。 DB2 CLI 是基于 Microsoft ODBC 和 X/Open 以及 ISO 调用接口标准创建的。
下面我们将重点介绍 DB2 Driver for ODBC and CLI 中的第二种方式,即通过 DB2 CLI Driver 来直接访问 DB2 数据库。以 Unix 平台下的 DB2 CLI Driver 为例,其目录结构如下表 2 所示。从目录结构中可以看出,DB2 CLI Driver 是一个轻量级的客户机驱动程序。它仅包括 DB2 跟踪工具,DB2 服务级别显示工具和问题分析和环境收集工具,以及开发 CLI 的 include 文件和 CLI 动态加载库等。 Windows 平台的目录结构略有不同。
| - - [adm] ` - - db2trc · DB2 跟踪工具 | - - [bin] | - - db2level · DB2 服务级别显示工具 ` - - db2support ·问题分析和环境收集工具 | - - [bnd] | - - [cfg] | - - [conv] | - - [db2dump] | - - [include] ·开发 CLI 的 include 文件 | - - sqlca.h | - - sqlcli.h … ` - - sqlsystem.h | - - [lib] ` - - libdb2.so · CLI driver 的动态加载库 … | - - [license] | - - [msg] | - - [security64] … |
应用程序可以简单的通过 CLI Driver 提供的 C/C++ 的库函数来初始化环境,连接数据库,调用 SQL 语句,最后释放数据库连接和环境。其通过 CLI Driver 来访问数据的流程如图 2 所示。通过 DB2 CLI Driver 提供的 API 函数,开发人员可以轻松的通过 CLI 实现对数据库的访问操作。
DB2 CLI Driver 在应用中具有以下特点:
DB2客户机 | 占用的磁盘空间 |
DB2 CLI Driver | 50 MB* |
DB2 Run-Time Client | 50 - 60 MB 注:需要额外的 20 MB 来存储 DB2 实例 |
DB2 Administration Client | 125
MB 注:不包括 JRE,并且需要额外的 20 MB 来存储 DB2 实例 |
DB2 Application Development Client | 130 – 160 MB 注:不包括 JDK,并且需要额外的 20 MB 来存储 DB2 实例 |
* 数据来源 SAP Note 1091801,其建议为 DB2 CLI Driver 保留 50 MB 的空间
|
SAP NetWeaver 7.0 SR3 之前的 SAP 版本默认使用 DB2 Runtime Client,也被称为旧客户机连通方式。这种方式需要在每个 SAP 应用服务器上具有一个本地 DB2 实例为其提供 DB2 CLI 库。如果 SAP 应用服务器与数据库是同一个主机,那它可以使用已有的 DB2 实例。如果是远程应用服务器,那就需要有一个本地 DB2 Runtime Client 实例。这就造成在每个应用服务器上都需要维护一个 DB2 Runtime Client,每次安装 DB2 补丁或升级到一个更高的数据库版本需要在每个应用服务器上执行手工升级操作。
从 SAP NetWeaver 7.0 SR3 版本开始引入了 DB2 CLI Driver(DB2 版本是 V9.1 或更高)替代 DB2 Runtime Client,它被称为新客户机连通方式。这种 CLI 驱动程序存储在一个可供所有 SAP 应用服务器共享的目录上。当 SAP ABAP 应用服务器启动时,CLI 驱动程序会从共享目录拷贝到本地目录。同样的机制也适用于 Java 应用服务器的 JDBC 驱动程序。这样带来的好处是:
通常我们所处的都是分布式 SAP 环境,即由一个 SAP Central instance 和多个 SAP Dialog instance 组成。图 3 是一个典型的 SAP 系统,包括一个 Central instance 和两个 Dialog instance,其中 Central instance 安装在数据库服务器上。我们会比较在该环境中安装和配置新旧客户机的区别。
目录 | 文件 | 内容 |
$(DIR_GLOBAL)/db6 | db2cli.ini | CLI 配置文件 |
$(DIR_GLOBAL)/db6/jdbc | db2jcc.jar db2jcc_license_cu.jar jdbcdriver.lst | JDBC 连接 |
$(DIR_GLOBAL)/db6/db2dump | db2diag.log | CLI 驱动诊断日志 |
$(DIR_GLOBAL)/db6/<(OS-DB2> | clidriver.lst db2_clidriver | 某 操作平台的 CLI 驱动 |
修改 db2cli.ini 文件,配置 DB2 连接和 db2diag.log 路径。
[ |
步骤 2 .在 Dialog instance 所在服务器上加载 Central instance 的
/sapmnt/
在 Central instance 上:
Export /sapmnt/ |
在 Dialog instance 上以 root 用户登陆:
mkdir – p /sapmnt/ |
步骤 3 .安装 Dialog instance 。新安装的 Dialog instance 会采用 DB2 CLI 方式连接数据库。
更让人欣喜的是,SAP 7.00 及以上版本,采用一种“自动同步”机制。当应用服务器启动时,使用 sapcpe 拷贝 SAP
kernel 到应用服务器本地 kernel 目录,该机制也适用于 DB2 CLI Driver 。当 Dialog instance
启动时,系统会检查 /usr/sap/
如果想确认 Dialog instance 使用哪种类型的 DB2 客户机,可以用
1 .如果使用 DB2 CLI driver,DB2 库应当从
/usr/sap/
… |
2 .如果使用 DB2 Runtime Client,DB2 库应当从
/db2/db2
… |
如果 SAP 系统满足下列条件:
我们就可以将其从旧客户机 DB2 runtime client 方式转向新客户机 DB2 CLI Driver 方式,具体步骤请参考 SAP note 1091801 。
|
本文介绍了 DB2 不同的连通方式,阐述 DB2 CLI Driver 的工作原理和优势,并通过对比新旧客户机在 SAP 系统中的使用特点,进一步说明了采用 DB2 CLI Driver 在大规模企业应用中的优势。