发行说明


|6.5 访问 Sybase 数据源

| |

|在将 Sybase 数据源添加至联合服务器之前,需要在 DB2 联合服务器上安装和配置 Sybase Open Client 软件。有关如何安装 Open Client |软件的特定详细信息,参见随 Sybase 数据库软件提供的文档中的安装过程。作为安装的一部分,确保包括了目录存储过程和 Sybase Open Client 库。配置客户机软件与 |Sybase 服务器的连接后,使用其中一个 Sybase 工具来测试连接。对 UNIX 使用 isql 工具,对 Windows 使用 SQL Advantage 工具。

|要设置联合服务器以访问存储在 Sybase 数据源上的数据,您需要:

  1. |安装 DB2 Relational Connect 版本 7.2。参见6.3.3, 安装 DB2 Relational Connect
  2. |将 Sybase 数据源添加至联合服务器。
  3. |指定 Sybase 代码页。 |

|本章讨论第 2 步和第 3 步。

|本章中的指示信息适用于 Windows NT、AIX 和“Solaris 操作环境”。特定于平台的区别在出现这些平台时作了注释。

|6.5.1 将 Sybase 数据源添加至联合服务器

|

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

  1. |设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris)。
  2. |将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris)。
  3. |回收 DB2 实例(仅 AIX 和 Solaris)。
  4. |创建并设置接口文件。
  5. |创建包装器。
  6. |可选:设置 DB2_DJ_COMM 环境变量。
  7. |创建服务器。
  8. |可选:设置 CONNECTSTRING 服务器选项。
  9. |创建用户映射。
  10. |为表和视图创建别名。

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

|6.5.1.1 第 1 步:设置环境变量并更新概要文件注册表(仅 AIX 和 Solaris)

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

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

|要设置环境变量:

  1. |编辑位于 sqllib/cfg |中的 db2dj.ini 文件,并设置以下环境变量:
    | SYBASE="<sybase home directory>"
    | 

    |其中 <sybase home directory> |是安装 Sybase 客户机的目录。

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

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

    |db2set DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini

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

    |db2set -g DB2_DJ_INI=$HOME/sqllib/cfg/db2dj.ini

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

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

    |其中: |

    |INSTANCEX
    |是实例的名称。

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

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

|6.5.1.2 第 2 步:将 DB2 链接至 Sybase 客户机软件(仅 AIX 和 Solaris)

|

|要允许访问 Sybase 数据源,DB2 联合服务器必须编辑为链接至客户机库。链接-编辑过程将为每个数据源创建一个包装器,联合服务器将与包装器进行通信。当运行 |djxlink 脚本时,就创建了包装器库。要发出 djxlink 脚本,输入:

|djxlink

|6.5.1.3 第 3 步:回收 DB2 实例(仅 AIX 和 Solaris)

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

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

|在“DB2 Windows NT 版”服务器上:
|NET STOP instance_name
|NET START instance_name

|在 DB2 AIX 版和 Solaris 版服务器上:
|db2stop
|db2start
|

|6.5.1.4 第 4 步:创建并设置接口文件

|要创建并设置接口文件,必须创建该文件并使其可供访问。 |

  1. |使用由 Sybase 提供的实用程序来创建包含想要访问的所有 |Sybase Open Server 的数据的接口文件。有关使用此实用程序的更多信息,参见来自 Sybase 公司的安装文档。

    |Windows NT 通常将此文件称为 |sql.ini。将您刚创建的文件从 |sql.ini 重命名为 interfaces |以便为该文件在所有平台上命名。如果您选择不将 sql.ini |重命名为 interfaces,则必须使用 IFILE 参数或第 8 步中说明的 |CONNECTSTRING 选项。

    |在 AIX 和 Solaris 系统上,此文件被命名为 <instance home>/sqllib/interfaces

  2. |使 DB2 可以访问接口文件。 |

    |在“DB2 Windows NT 版”服务器上:
    |将该文件放置在 DB2 实例的 |%DB2PATH% 目录中。

    |在 DB2 AIX 版和 Solaris 版服务器上:
    |将该文件放置在 DB2 实例的 $HOME/sqllib 目录中。使用 |ln 命令来从 DB2 实例的 $HOME/sqllib 目录链接至该文件。例如:
    |ln -s -f /home/sybase/interfaces  /home/db2djinst1/sqllib
    |
    |

|6.5.1.5 第 5 步:创建包装器

|使用 CREATE WRAPPER 语句来指定将用来访问 Sybase 数据源的包装器。包装器是联合系统用来与数据源进行通信以及从数据源中检索数据的机制。DB2 中包括用于 |Sybase、CTLIB 和 DBLIB 的两个包装器。以下示例显示了 CREATE WRAPPER 语句:

|CREATE WRAPPER CTLIB 

|其中,CTLIB 是与 |Sybase Open Client 软件配合使用的缺省包装器名。CTLIB 包装器可以在 Windows NT、AIX 和 Solaris 服务器上使用。

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

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

|

|当访问 Sybase 数据源时,要提高性能,应设置 DB2_DJ_COMM 环境变量。此变量确定初始化联合服务器时是否装入包装器。将 DB2_DJ_COMM |环境变量设置为包括与您在先前步骤中指定的包装器相对应的包装器库;例如: |

|在“DB2 AIX 版”服务器上:
|db2set DB2_DJ_COMM='libctlib.a' 

|在“DB2 Solaris 版”服务器上:
|db2set DB2_DJ_COMM='libctlib.so' 
|

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

|有关包装器库名的更多信息,参考 DB2 SQL |Reference。有关 |DB2_DJ_COMM 环境变量的信息,参考《管理指南》

|6.5.1.7 第 7 步:创建服务器

|使用 CREATE SERVER 语句来定义您想访问其数据源的每个 Sybase 服务器;例如:

|CREATE SERVER SYBSERVER TYPE SYBASE VERSION 12.0 WRAPPER CTLIB
|OPTIONS (NODE 'sybnode', DBNAME'sybdb')

|其中: |

|SYBSERVER
|是为 Sybase 服务器指定的名称。此名称必须是唯一的。

|SYBASE
|是正在配置要访问的数据源的类型。Sybase 是唯一受支持的数据源。

|12.0
|是您正在访问的 Sybase 的版本。受支持的版本为 10.0、11.0、11.1、11.5, 11.9 和 12.0。

|CTLIB
|是您在 CREATE WRAPPER 语句中指定的包装器名。

|'sybnode'
|SYBSERVER 所驻留在的节点的名称。从接口文件中获取节点值。此值是区分大小写的。

|尽管节点名被指定为一个选项,但是它是 Sybase 数据源必需的。有关其他选项的信息,参见 DB2 SQL Reference

|'sybdb'
|是想要访问的 Sybase 数据库的名称。从 Sybase 服务器中获取此名称 |

|6.5.1.8 第 8 步:可选:设置 CONNECTSTRING 服务器选项

|指定超时阈值、接口文件的路径和名称以及接口文件的信息包大小。Sybase Open Client |使用超时阈值来中断运行了太长时间的查询和响应。可以通过使用 CREATE SERVER OPTION DDL 语句的 CONNECTSTRING |选项来在 DB2 中设置这些阈值。使用 CONNECTSTRING 选项来指定:

|   .-;--------------------------------.
|   V                                  |
|>>---+------------------------------+-+------------------------><
|     +-TIMEOUT-- = -- seconds-------+
|     +-LOGIN_TIMEOUT-- = -- seconds-+
|     +-IFILE-- = --"string"---------+
|     +-PACKET_SIZE-- = --bytes------+
|     '-;----------------------------'
| 
| 
|

|TIMEOUT
|指定“DB2 通用数据库”为任何 SQL 语句而等待来自 Sybase Open Client 的响应的秒数。seconds |的值是“DB2 通用数据库”的整数范围内的一个正整数。您指定的超时值取决于您正在使用的包装器。Windows NT、AIX |和 Solaris 服务器都能够利用 DBLIB 包装器。DBLIB 包装器的缺省值为 0。在 Windows NT、AIX 和 |Solaris 服务器上,DBLIB 的缺省值将导致“DB2 通用数据库”无限期地等待响应。

|LOGIN_TIMEOUT
|指定“DB2 通用数据库”等待来自 Sybase Open Client 的对登录请求的响应的秒数。缺省值与 TIMEOUT 的缺省值相同。

|IFILE
|指定 Sybase Open Client 接口文件的路径和名称。必须用双引号(")将 string 中所标识的路径括起来。在 Windows NT 服务器上,缺省值为 %DB2PATH%。在 AIX 和 Solaris 服务器上,缺省值为“DB2 通用数据库”实例的主目录中的 sqllib/interfaces

|PACKET_SIZE
|指定接口文件的信息包大小(以字节计)。如果数据源不支持所指定的信息包大小,则连接将失败。当每个记录都非常大时(例如,当在大型表中插入行时),通过增大信息包大小可以明显地提高性能。字节大小为数值。有关更多信息,参见 Sybase 参考手册。 |

|示例:

|在 Windows NT 服务器上,要将超时值设置为 60 秒,并将接口文件设置为 C:\etc\interfaces,使用:

|CREATE SERVER OPTION connectstring FOR SERVER sybase1
|SETTING 'TIMEOUT=60;LOGIN_TIMEOUT=5;IFILE="C:\etc\interfaces"'
| 

|在 AIX 和 Solaris 服务器上,要将超时值设置为 60 秒,并将接口文件设置为 /etc/interfaces,使用:

|CREATE SERVER OPTION connectstring FOR SERVER sybase1
|SETTING 'TIMEOUT=60;PACKET_SIZE=4096;IFILE="/etc/interfaces"'
| 

|6.5.1.9 第 9 步:创建用户映射

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

|CREATE USER MAPPING FOR DB2USER SERVER SYBSERVER
|OPTIONS ( REMOTE_AUTHID 'sybuser', REMOTE_PASSWORD 'day2night')

|其中: |

|DB2USER
|是您正在映射至 Sybase 数据源中定义的用户标识的本地用户标识。

|SYBSERVER
|是在 CREATE SERVER 语句中定义的 Sybase 数据源的名称。

|'sybuser'
|是您正在将 DB2USER 映射至的 Sybase 数据源的用户标识。此值是区分大小写的。

|'day2night'
|是与 'sybuser' 相关联的密码。此值是区分大小写的。 |

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

|6.5.1.10 第 10 步:为表和视图创建别名

|对位于 Sybase 数据源中的每个视图或表指定别名。当您查询 |Sybase 数据源时将使用这些别名。Sybase 别名是区分大小写的。将模式名和表名都用双引号(")括起来。以下示例显示了 CREATE NICKNAME |语句:

|CREATE NICKNAME SYBSALES FOR SYBSERVER."salesdata"."europe"

|其中: |

|SYBSALES
|是 Sybase 表或视图的唯一别名。 |

|SYBSERVER."salesdata"."europe"
|三部分组成的标识符,遵循以下格式:

|data_source_name."remote_schema_name"."remote_table_name" |

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

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

|6.5.2 指定 Sybase 代码页

|

|仅当 DB2 联合服务器和 Sybase 服务器正在运行不同的代码页时,才需要执行此步骤。使用与 DB2 使用的代码集相同的代码集的数据源不需要转换。下表提供了常见的“本地语言支持”(NLS)代码页的等效 Sybase 选项。必须将 |Sybase 数据源配置为对应于这些等效选项,或者客户机代码必须能够检测不匹配的项,并将它标志为错误,或者使用它自己的语义来映射数据。如果找不到从源代码页至目标代码页的转换表,则 DB2 会发出错误信息。有关更多信息,参考 Sybase 文档。
|

|表 2. Sybase 代码页选项

代码页 等效 Sybase 选项
850 cp850
897 sjis
819 iso_1
912 iso_2
1089 iso_6
813 iso_7
916 iso_8
920 iso_9


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