发行说明


6.8 存取 Informix 数据源(新章节)

在将 Informix 数据源添加至 DB2 联合服务器之前,需要在联合服务器上安装和配置 Informix Client SDK 软件。有关如何安装 Client SDK 软件的特定详细信息,参见随 Informix 数据库软件提供的文档中的安装过程。确保包括了 Informix Client SDK 库,它是安装的一部分。

要设置联合服务器以存取存储在 Informix 数据源上的数据,您需要:

  1. 安装 DB2 Relational Connect。参见6.3.3, 安装 DB2 Relational Connect
  2. 应用最新的“DB2 修订包”。
  3. 将 Informix 数据源添加至联合服务器。

本章讨论第 3 步。

本章中的指示信息适用于 AIX、“Solaris 操作环境”和 HP-UX 操作系统。特定操作系统的差别在出现时作了注释。

6.8.1 将 Informix 数据源添加至联合服务器

要将 Informix 数据源添加至联合服务器,需要:

  1. 设置环境变量并更新概要文件注册表。
  2. 将 DB2 链接至 Informix 客户机软件。
  3. 回收 DB2 实例。
  4. 创建 Informix sqlhosts 文件。
  5. 创建包装器。
  6. 可选:设置 DB2_DJ_COMM 环境变量。
  7. 创建服务器。
  8. 创建用户映射。
  9. 为表、视图和 Informix 同义词创建别名。

本节中详细说明了这些步骤。

6.8.1.1 第 1 步:设置环境变量并更新概要文件注册表

通过修改 db2dj.ini 文件并发出 db2set 命令来设置数据源环境变量。db2dj.ini 文件包含关于安装在联合服务器上的 Informix 客户机软件的配置信息。db2set 命令使用您的设置来更新 DB2 概要文件注册表。

在分区数据库系统中,可对特定实例中的所有节点使用单个 db2dj.ini 文件,也可以对特定实例中的一个或多个节点使用唯一的 db2dj.ini 文件。对于每个实例,非分区数据库系统只能有一个 db2dj.ini 文件。

要设置环境变量:

  1. 编辑位于 sqllib/cfg 目录中的 db2dj.ini 文件,并设置下列环境变量:
    注意:
    |如果系统上还没有此文件,则您自己可以创建此文件。 |

    INFORMIXDIR

    将 INFORMIXDIR 环境变量设置为指向 Informix Client SDK 软件的安装目录的路径;例如:

    |INFORMIXDIR=/informix/csdk
    
    

    INFORMIXSERVER

    此变量标识缺省 Informix 服务器的名称。

    |INFORMIXSERVER=inf93
    | 
    
    

    注意:尽管 Informix 包装器不使用此变量的值,但 Informix 客户机要求设置此变量。该包装器使用节点服务器选项的值,它指定您想要访问的 Informix 数据库服务器。

    INFORMIXSQLHOSTS

    如果您在使用 Informix sqlhosts 文件的缺省路径($INFORMIXDIR/etc/sqlhosts),则不需要设置此变量。然而,如果您对 Informix sqlhosts 文件使用不同于缺省路径的路径,则需要将此变量设置为 Informix sqlhosts 文件的全路径名。例如:

    |INFORMIXSQLHOSTS=/informix/csdk/etc/my_sqlhosts
    | 
    
    
  2. 使用 Informix 环境变量来更新 DB2 实例的 .profile 文件。可以通过发出下列命令来设置和导出每个变量以完成此操作:
    PATH=$INFORMIXDIR/bin:$PATH
    export PATH
     
    INFORMIXDIR=<informix_client_path>
    export INFORMIXDIR
    

    其中,informix_client_path 是联合服务器上表示 Informix 客户机的安装目录的路径。如果路径中的名称包含空白,则使用双引号(")将该路径引起来。

  3. 通过输入以下命令来执行 DB2 实例 .profile
    . .profile
    
  4. 发出 db2set 命令来使用您的更改来更新 DB2 概要文件注册表。db2set 命令的语法取决于数据库系统的结构。仅当在下列任何数据库系统结构中使用 db2dj.ini 文件时,才需要执行此步骤。

    如果在非分区数据库系统中使用 db2dj.ini 文件,或者如果想要 db2dj.ini 文件仅应用于当前节点,则发出:

    db2set DB2_DJ_INI=sqllib/cfg/db2dj.ini
    
    注意:
    |本节中的路径名应该是全限定的。例如,my_home/my_instance/sqllib/cfg/db2dj.ini |

    如果您正在分区数据库系统中使用 db2dj.ini 文件, 并且您想要 db2dj.ini 文件中的值适用于此实例中的所有节点,则应发出:

    db2set -g DB2_DJ_INI = sqllib/cfg/db2dj.ini
    

    如果在分区数据库系统中使用 db2dj.ini 文件,并且想要将 db2dj.ini 文件中的值应用于特定节点,则发出:

    db2set -i INSTANCEX 3 DB2_DJ_INI=sqllib/cfg/node3.ini 
    

    其中:

    INSTANCEX
    是实例的名称。

    3
    db2nodes.cfg 文件中列示的节点号。

    node3.ini
    db2dj.ini 文件的已修改并且重命名的版本。

6.8.1.2 第 2 步:将 DB2 链接至 Informix 客户机软件

要允许存取 Informix 数据源,DB2 联合服务器必须连接编辑至客户机库。连接编辑进程将为联合服务器将与之通信的每个数据源创建包装器库。在运行 djxlinkInformix 脚本时就创建了 Informix 包装器库。要发出 djxlinkInformix 脚本,输入:

djxlinkInformix
注意:

|djxlinkInformix |脚本仅创建 Informix 包装器库。还有另一个脚本,即试图为“DB2 通用数据库”支持的每个数据源 |(Oracle 和 Microsoft SQL Server 等等)创建一个包装器库的 djxlink 脚本。如果只安装了其中一些数据源的客户机软件,则在发出 djxlink 脚本时,对于每个缺少的数据源,都将接收到一条错误消息。

|您需要有 |“UNIX 系统管理员”(root 用户)权限才能运行 djxlinkInformix 和 djxlink 脚本。

|djxlinkInformix |和 djxlink 脚本将详细的错误和警告信息写至特定文件,这取决于操作系统。例如,在 AIX 上,djxlinkInformix 脚本会写至 /usr/lpp/db2_07_01/lib/djxlinkInformix.out,而 djxlink 脚本会写至 /usr/lpp/db2_07_01/lib/djxlink.out

|djxlinkInformix 和 djxlink 脚本会在特定目录中创建包装器库,这取决于操作系统。例如,在 AIX 上,会在 /usr/lpp/db2_07_01/lib 目录中创建 libinformix.a 包装器库。

|在创建 libinformix.a 包装器库后检查它的许可权,以确保 DB2 实例所有者可读取和执行该库。如果 DB2 实例所有者不在“系统”组中,则对 libinformix.a 包装器库的许可权应为 -rwxr-xr-x root system ...libinformix.a。 |

6.8.1.3 第 3 步:回收 DB2 实例

为确保在程序中设置了环境变量,应回收 DB2 实例。回收实例时,刷新 DB2 实例以接受您所作的更改。

发出下列命令来回收 DB2 实例:

在“DB2 AIX 版、Solaris 操作环境版和 HP-UX 版服务器上:
db2stop
db2start

|6.8.1.4 第 4 步:创建 Informix sqlhosts 文件

|此文件指定每个 Informix 数据库服务器的位置以及该数据库服务器的连接类型(协议)。可有几种方式创建此文件。可从让 Informix |Connect 或 Informix Client SDK 连接至 Informix 服务器的另一系统来复制它。还可在 DB2 服务器上配置 |Informix Client SDK 以连接至 Informix 服务器,该服务器创建 sqlhosts 文件。

|复制或创建 sqlhosts 文件之后,DB2 实例所有者应使用 Informix dbaccess |(如果它在 DB2 服务器上)连接和查询 Informix 服务器。这允许在您尝试配置 |DB2 Relational Connect 以使用 Informix Client SDK 之前,Informix Client SDK 能够连接至 |Informix 服务器。

有关设置此文件的更多信息,参考 Informix 手册 Administrators Guide for Informix Dynamic Server

警告:

如果未在 sqlhosts 文件中定义 Informix 数据库服务器名,则当您执行的操作需要连接至 Informix 数据库服务器时,将接收到错误。

6.8.1.5 第 5 步:创建包装器

使用 CREATE WRAPPER 语句来指定将用来存取 Informix 数据源的包装器。包装器是联合系统用来与数据源进行通信以及从数据源中检索数据的机制。以下示例显示了 CREATE WRAPPER 语句:

CREATE WRAPPER informix

其中,informix 是包装器名;informix 是与 Informix Client SDK 软件配合使用的缺省包装器名。

可以用您选择的名称来替代缺省包装器名。但是,如果这样做的话,则还必须在 CREATE WRAPPER 语句中包括 LIBRARY 参数以及联合服务器的包装器库的名称。有关包装器库名的更多信息,参见 DB2 SOL Reference 中的 CREATE WRAPPER 语句。

Informix 的包装器库名是:

6.8.1.6 第 6 步:可选:设置 DB2_DJ_COMM 环境变量

要在存取 Informix 数据源提高性能,应在联合服务器上设置 DB2_DJ_COMM 环境变量。此变量确定联合服务器初始化时是否装入包装器。将 DB2_DJ_COMM 环境变量设置为包括与您在先前步骤中指定的包装器相对应的包装器库。如果正在使用 Korn 外壳程序或 Bourne 外壳程序命令行界面,则使用下列导出命令:

在“DB2 AIX 版”服务器上:
DB2_DJ_COMM='libinformix.a'
export DB2_DJ_COMM

在“DB2 Solaris 操作环境版”服务器上:
DB2_DJ_COMM='libinformix.so'
export DB2_DJ_COMM

在“DB2 HP-UX 版”服务器上:
DB2_DJ_COMM='libinformix.sl'
export DB2_DJ_COMM

必须确保等号(=)两边都没有空格。

如果在使用 C 外壳程序命令行界面,则使用下列命令来设置环境变量:

setenv DB2_DJ_COMM 'libinformix.a'(“DB2 AIX 版”服务器)
setenv DB2_DJ_COMM 'libinformix.so'(“DB2 Solaris 操作环境版”服务器)
setenv DB2_DJ_COMM 'libinformix.sl'(“DB2 HP--UX 版”服务器)

有关包装器库名和 DB2_DJ_COMM 环境变量的更多信息,参考 DB2 SQL Reference

6.8.1.7 第 7 步:创建服务器

使用 CREATE SERVER 语句来定义想要存取其数据源的每个 Informix 服务器。此语句的语法为:

CREATE SERVER server_name TYPE server_type VERSION server_version
	WRAPPER wrapper_name
OPTIONS (NODE 'node_name', DBNAME 'database_name')

其中:

|

server_name
|是对 Informix 数据库服务器指定的名称。此名称必须是唯一的,并且不能与联合数据库中定义的任何其它服务器名重复。服务器名一定不能与联合数据库中的任何表空间的名称相同。

TYPE server_type
指定正在配置对它的存取的数据源的类型。
注意:
|对于 Informix 包装器,server_type 必须是 informix。 |

VERSION server_version
是想要访问的 Informix 数据库服务器的版本。受支持的 Informix 版本有 5、7、8 和 9。

WRAPPER wrapper_name
是您在 CREATE WRAPPER 语句中指定的名称。

NODE 'node_name'
server_name 驻留的节点的名称。必须在 Informix sqlhosts 文件中定义 node_name(参见第 4 步)。尽管将 node_name 指定为 CREATE SERVER SQL 语句中的选项,但是它是 Informix 数据源所必需的。此值是区分大小写的。有关其它选项的信息,参见 DB2 SQL Reference

DBNAME 'database_name'
是想要存取的 Informix 数据库的名称。

下面是 CREATE SERVER 语句的示例:

CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix 
OPTIONS (NODE 'abc', DBNAME 'sales')

FOLD_IDFOLD_PW 服务器选项会影响包装器在将用户标识和密码发送至 Informix 之前是将它们转换为大写还是小写。带有 FOLD_IDFOLD_PW 服务器选项的 CREATE SERVER 语句的示例为:

CREATE SERVER asia TYPE informix VERSION 9 WRAPPER informix 
OPTIONS (NODE 'abc', DBNAME 'sales', FOLD_ID 'U', FOLD_PW 'U')

6.8.1.8 第 8 步:创建用户映射

如果 DB2 联合服务器上的用户标识或密码与 Informix 数据源上的用户标识或密码不同,则使用 CREATE USER MAPPING 语句来将本地用户标识映射为在 Informix 数据源中定义的用户标识和密码;例如:

CREATE USER MAPPING FOR local_userid SERVER server_name 
OPTIONS (REMOTE_AUTHID 'remode_userid', REMOTE_PASSWORD 'remote_password')

其中:

local_userid
是您正在映射为 Informix 数据源中定义的用户标识的本地用户标识。

SERVER server_name
在 CREATE SERVER 语句中定义的 Informix 数据源的名称。

REMOTE_AUTHID 'remote_userid'
是您正在将 local_userid 映射至的 Informix 数据库服务器上的用户标识。除非在 CREATE SERVER 语句中将 FOLD_ID 服务器选项设置为 'U' 或 'L',否则此值是区分大小写的。

REMOTE_PASSWORD 'remote_password'
|是与 remote_userid 相关联的密码。除非在 |CREATE SERVER 语句中将 FOLD_PW 服务器选项设置为 'U' 或 'L',否则,此值是区分大小写的。

下面是 CREATE USER MAPPING 语句的示例:

CREATE USER MAPPING FOR robert SERVER asia 
OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night')

可以使用 DB2 专用寄存器 USER 来将发出 CREATE USER MAPPING 语句的人员的授权标识映射为在 REMOTE_AUTHID 用户选项中指定的数据源授权标识。下面是包括 USER 专用寄存器的 CREATE USER MAPPING 语句的示例:

CREATE USER MAPPING FOR USER SERVER asia 
OPTIONS (REMOTE_AUTHID 'bob', REMOTE_PASSWORD 'day2night')

有关其它选项的更多信息,参见 DB2 SQL Reference

6.8.1.9 第 9 步:为表、视图和 Informix 同义词创建别名

为位于 Informix 数据源中的每个表、视图或 Informix 同义词指定别名。别名可长达 128 个字符。查询 Informix 数据源时将使用这些别名。除非用双引号(")将服务器、模式和表名引起来,否则,DB2 将把它们转换为大写。以下示例显示了 CREATE NICKNAME 语句:

CREATE NICKNAME nickname FOR 
			server_name."remote_schema_name"."remote_table_name" 

其中:

nickname
是用来标识 Informix 表、视图或同义词的唯一别名。

server_name."remote_schema_name"."remote_table_name"
是由三部分组成的表示远程对象的标识符。

下面是 CREATE NICKNAME 语句的示例:

CREATE NICKNAME salesjapan FOR asia."salesdata"."japan"

对想要为其创建别名的每个表或视图重复此步骤。创建别名时,DB2 将使用连接来查询数据源目录。此查询将测试您与数据源的连接。如果连接不工作,则将接收到错误消息。

有关 CREATE NICKNAME 语句的更多信息,参见 DB2 SQL Reference。有关一般别名和验证数据类型映射的更多信息,参见《DB2 管理指南》


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]