Page navigation
- 1. 我是否能在一个服务器上安装不同版本的联邦数据库?
- 2. 如果我已经有一个联邦数据库版本 8.2 的实例,可以在联邦数据库 9.5 上使用相同的实例吗?
- 3. 我在哪里可能获取联邦数据库的试用版本及其更新版本?
- 4. 我在哪里能够获取联邦数据库 在 Linux,UNIX 和 Windows 上的修订包?
- 5. 我在哪里能找到 APAR 的列表?
- 6. 如何检查在 DB2 上是否安装了联邦数据库产品?
- 7. 联邦数据库支持所有 DB2 支持的平台吗?
- 8. 如何得知联邦数据库各版本支持的数据源及其功能信息?
- 9. 一般来讲,什么因素制约联邦数据库的性能?如何能够解决?
- 10. 如何查看联邦数据库的系统编目表?是否存在相关工具?
- 11. 在什么情况下使用 odbc,jdbc 包装器?
- 12. 是否存在简单测试联邦数据库的脚本 ?
- 13. 有关 Teradata 包装器的常见问题
- 14. 我从哪里可以下载合适的 ODBC driver?
- 15. 如何实现 JDBC 包装器的配置
- 16. ODBC 包装器配置原理
- 17. 如何解决普通代码页转换的问题?
- 18. 需要特别注意联邦数据库的哪些配置参数或者哪些参数专门针对联邦数据库 ?
- 19. 如何判断操作错误是发生在联邦数据库端还是数据源端?
- 20. 联邦数据库特有典型错误
- 21. 联邦数据库发布的库的类别?什么情况下才需要运行 djxlink 脚本?
- 22. 什么时候使用 Fenced 包装器?
- 23. 怎样获取联邦数据库的日志,跟踪,以及获取远端数据源的跟踪(如 ODBC 等)?
- 关于本文的作者
- 更多 FAQ 内容
本文包含了使用联邦数据库过程中经常被用到的问题,它涵盖了联邦数据库的各个版本的问题,在进行特定版本的时候进行了指明区分。
1. 我是否能在一个服务器上安装不同版本的联邦数据库?
可以。在安装某一版本联邦数据库之前,服务器上必须首先安装能够支持该版本联邦数据库的 DB2 数据库系统。在联邦数据库安装的起始阶段,安装程序会自动检测该主机是否已安装了相应的 DB2 数据库系统,如果没有,则自动进行 DB2 安装;如果已有兼容的 DB2 数据库系统存在,则自动和该 DB2 关联。然后,安装程序会检测主机上是否已安装了相同版本的联邦数据库产品,以防止重复安装,但对于其它版本的联邦数据库产品则不进行检测。
2. 如果我已经有一个联邦数据库版本 8.2 的实例,可以在联邦数据库 9.5 上使用相同的实例吗?
不能,你不能跨联邦数据库版本共享实例。你可以把 DB2 UDB 版本升级到以后的版本,但你不能没有升级就在不同版本间共享实例。目前联邦数据库支持 8.2 到版本 9,版本 9.5,版本 9.7 的实例升级。
3. 我在哪里可能获取联邦数据库的试用版本及其更新版本?
下载联邦数据库版本 9.7:
“Download IBM InfoSphere Federation Server Version 9.7 for AIX”(英文)
下载联邦数据库版本 9.5:
“Download WebSphere Federation Server Version 9.5 for AIX”(英文)
下载联邦数据库版本 9:
“DB2 Version 9.1 fix packs & client downloads for AIX -- (DB2 64-bit)”(英文)
下载联邦数据库版本 8.2:
4. 我在哪里能够获取联邦数据库 在 Linux,UNIX 和 Windows 上的修订包?
修订程序包修改了 IBM 产品某发布版本中已发现的错误和缺陷,用户需要下载并安装该修订包来避免该错误和缺陷。
用户可以在下列链接中找到不同版本的修订包下载地址:
“Fix packs for InfoSphere Federation Server products”(英文)
注意:IBM InfoSphere Federation Server 产品的修订包中包含了 DB2 的修订包。
5. 我在哪里能找到 APAR 的列表?
APAR 是 Authorized Program Analysis Reports(授权程序分析报告)的缩写。APAR 中记录了 IBM 产品某发布版本中已发现的错误和缺陷,需要通过该产品的修订程序包进行修复。由于这些错误和缺陷可能会对产品的使用造成影响,因此,当用户进行产品问题诊断时,APAR 是一个重要的参考文档。
用户可在以下链接处找到 DB2 for Linux/UNIX and Windows( 包含联邦数据库 ) 各版本的 APAR 列表。
“Authorized Program Analysis Reports, or APARs, for DB2 9.7 for Linux UNIX and Windows”(英文)
6. 如何检查在 DB2 上是否安装了联邦数据库产品?
如果您安装了 DB2,那么自动你可以自动获得联邦数据库 DRDA 包装器和 Informix 包装器的功能而并不需要额外的 license。V97 中同时可获得 Websphere 包装器功能。
如果需要联邦数据库的其他产品,那么可以通过 db2ls 命令查看是否安装了某个特定的包装器。
首先使用 db2level 可以看到产品的安装路径,然后在此安装路径下执行 db2ls 命令如下所示:
$ db2level DB21085I Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071" with level identifier "08020107". Informational tokens are "DB2 v9.7.0.1", "s091103", "IP23027", and Fix Pack "1". Product is installed at "/opt/IBM/db2/V9.7". $ db2ls -q -a|grep DATA_SOURCE_SUPPORT DB2_DATA_SOURCE_SUPPORT 9.7.0.1 1 DB2 data source support ODBC_DATA_SOURCE_SUPPORT 9.7.0.1 1 ODBC data source support TERADATA_DATA_SOURCE_SUPPORT 9.7.0.1 1 Teradata data source support JDBC_DATA_SOURCE_SUPPORT 9.7.0.1 1 JDBC data source support ORACLE_DATA_SOURCE_SUPPORT 9.7.0.1 1 Oracle data source support SQL_SERVER_DATA_SOURCE_SUPPORT 9.7.0.1 1 SQL Server data source support CUSTOM_DATA_SOURCE_SUPPORT 9.7.0.1 1 Custom data source support SYBASE_DATA_SOURCE_SUPPORT 9.7.0.1 1 Sybase data source support INFORMIX_DATA_SOURCE_SUPPORT 9.7.0.1 1 Informix data source support |
7. 联邦数据库支持所有 DB2 支持的平台吗?
目前联邦数据几乎支持所有 DB2 LUW 所能够支持的平台。具体每个版本支持的平台可以参考以下链接:
“InfoSphere Federation Server documentation and release notes by version”(英文)
8. 如何得知联邦数据库各版本支持的数据源及其功能信息?
我们可以从以下链接获得各个版本联邦数据库支持的数据源:
V91 支持的数据源链接:
IBM DB2 9 信息中心 —— “Supported data sources” 部分。
V95 支持的数据源链接:
IBM DB2 9.5 信息中心 —— “Supported data sources” 部分。
V97 支持的数据源链接:
IBM DB2 9.7 信息中心 —— “Supported data sources” 部分。
可以从以下链接获得各个包装器能够支持的功能:
V91 各包装器支持的功能:
IBM DB2 9 信息中心 —— “V9.1 中的新增内容:联合” 部分。
V95 各包装器支持的功能:
IBM DB2 9.5 信息中心 —— “Data source support for federated features” 部分。
V97 各包装器支持的功能:
IBM DB2 9.7 信息中心 —— “Data source support for federated features ” 部分。
9. 一般来讲,什么因素制约联邦数据库的性能?如何能够解决?
联邦数据库的性能调优和 DB2 基本相似,但是由于它尽可能地把语句下推到远程去执行,所以也有其特殊之处,以下是两个简单的检查联邦数据库性能的方法,更详细的方法需要打出语句的执行计划进行分析:
1) 当发现查询的性能低下时,可以首先使用 db2expln -database SAMPLE -statement <statement> 来查看到远程执行的语句, 并将此语句直接在远程执行查看其性能,如果在远程直接执行没有问题,那么要检查到远程执行的语句是否和预想的相同,如果有重要的函数没有被 pushdown 到远程去的话,那么要检查数据源相应的能力属性是否和 DB2 的相同并进行更正。
2) 需要经常更新系统编目标中的统计信息,您可以使用 nnstat 来手动更新此类信息,或者参考以下链接来定义一个自动更新的策略来自动更新。
IBM DB2 9.5 信息中心 —— “Automatic update of nickname statistics” 部分。
10. 如何查看联邦数据库的系统编目表?是否存在相关工具?
联邦数据库使用的系统编目表和 DB2 的系统编目表有重复的部分也有自己独自拥有的部分,但是均可以通过 db2cat 这个工具来查看联邦数据库对象的系统编目信息,典型应用如下:
db2cat -d <dbname> -n <nickname name> -s <schema_name> -p <object type> -o <output file> |
如果想要打印 server 的系统编目信息,可以指定 object type 为 server。可以在此链接中查看 db2cat 的具体用法:
IBM DB2 9.7 信息中心 —— “db2cat - System catalog analysis command ” 部分。
或者可以直接通过查询系统编目表来查看联邦数据库的编目信息,具体解释可参考:
文章:“Understanding the WebSphere Federation Server system catalogs” (英文)。
11. 在什么情况下使用 odbc,jdbc 包装器?
联邦数据库产品包括很多数据源的包装器,其中包括 DB2, Microsoft SQL Server, Sybase, Oracle, Informix, Teradata 等关系型数据源和 Flat File,Excel 等非关系型数据源。然而,由于数据库的种类繁多,联邦服务器不可能对于每种数据源都提供对应的包装器,因此联邦数据库提供了另一种解决方案,那就是提供 ODBC 和 JDBC 包装器,用来联邦那些支持 ODBC 或 JDBC 数据源驱动程序的关系数据库或非关系型数据库。
12. 是否存在简单测试联邦数据库的脚本 ?
你可以从文章最后下载关于 sybase,odbc,xml 包装器使用的简单范例脚本,在脚本中我们包含了包装器,服务,用户映射的创建及其匿名,联邦过程的创建和使用,同时也有 set passthru 模式的应用。setup_xml.clp 则则简单的执行了创建昵称并对其进行查询的语句。
13. 有关 Teradata 包装器的常见问题
1) 如何下载,安装 Teradata® Client 端软件?
联邦数据库中的 Teradata® 包装器依赖于 Teradata® 公司发布的 Teradata® Tools and Utilities Call Level Interface 2(TTU cliv2) 库实现与 Teradata® Database 的连接。该库可从以下链接处免费下载,联邦数据库目前支持的最新版本为 TTU 12 cliv2。
需注意的是,TTU cliv2 库依赖于另外两个 Teradata® 组件,Teradata Database International Components for Unicode (TDICU) 和 Teradata Generic Security Services(TeraGSS)。从以上链接下载的安装包中已包含了以上的两个组件,请按照 1)TDICU,2)TeraGSS,3)TTU cliv2 的顺序依次安装以上三个组建。安装包中的 readme 文档中有针对不同平台的详细安装说明。
2) 如何在系统中注册 Teradata® 数据源?
在使用 Teradata® 数据源前,首先需要在系统的主机名和 IP 地址查询静态表中注册该数据源。查询静态表在不同操作系统上的位置有所不同。
a) 在 Unix/Linux 操作系统上,该文件为 /etc/hosts。
b) 在 Windows 操作系统上,该文件为 %WINDIR%\system32\drivers\etc\hosts。
用户可通过向查询静态表中添加如下项来注册 Teradata® 数据源,
9.22.5.77 nodexyz nodexyzCOP1 # teradata server |
其中,第一字段为数据源的 IP 地址。第二字段为数据源的主机域名,该字段可省略。第三字段为该主机的别名,主机别名字段有严格的命名规则:
a) 必须以 COPn 结尾,其中序号 n 表示隶属于一个 Teradata® Communication Processor 的 Teradata application processor 的编号。
b) 该字段的非 COPn 部分的长度必须小于等于 8 个字符。
c) 该字段的非 COPn 部分正是我们在注册联邦数据库服务器对象时使用的节点名称。例如,针对上面添加的数据源,我们可使用如下语句注册一个服务器对象:
CREATE SERVER <server_name> TYPE TERADATA VERSION <version> WRAPPER <wrapper_name> OPTIONS (NODE 'nodexyz ’ ); |
14. 我从哪里可以下载合适的 ODBC driver?
联邦数据库产品提供了免费的 IBM 嵌入式 ODBC 数据源驱动,如表 1 所示:
| 联邦数据库版本 | 操作系统 | 如何下载 |
|---|---|---|
| Microsoft SQL Server 包装器 | ||
| V9.1 | Windows 平台 | Microsoft 提供的 ODBC 驱动管理器 |
| UNIX 平台 | ftp://ftp.software.ibm.com/software/db2ii/downloads/odbc_driver/ | |
| V9.5 以及以后版本(如 V9.7) | Windows 平台 | Microsoft 提供的 ODBC 驱动管理器 |
| AIX/zLinux/Linux 390 | ftp://ftp.software.ibm.com/software/db2ii/downloads/odbc_driver/ | |
| 其他 UNIX 平台 |
ftp://ftp.software.ibm.com/software/db2ii/downloads/odbc_driver/
或者安装介质 | |
| ODBC 包装器 | ||
| V9.1 | Windows 平台 | Microsoft 提供的 ODBC 驱动管理器 |
| UNIX 平台 | 不可用 | |
| V9.5 修订包 2 以及以后版本 | Windows 平台 | Microsoft 提供的 ODBC 驱动管理器 |
| UNIX 平台 | ftp://ftp.software.ibm.com/software/db2ii/downloads/odbc_driver/ | |
注意:版本 9.7 之后的安装介质也包含 ODBC 驱动程序。另外,V9.1 版本提供的嵌入式 ODBC 驱动程序不能用于 V9.5 及以后版本的使用。
详细请参考下列链接:
使用 IBM 嵌入式 ODBC 数据源驱动:
“Use of IBM® branded DataDirect® ODBC drivers with WebSphere® Federation Server” 。
15. 如何实现 JDBC 包装器的配置
与 ODBC 包装器不同,JDBC 包装器的配置过程相对简单,下面两步骤为 JDBC 包装器不同于其他包装器的配置过程:
1) 创建包装器
用户可以使用默认的 JDBC 包装器名称:
CREATE WRAPPER jdbc;
也可以使用自定义包装器名称:
CREATE WRAPPER jdbc_wrapper1 LIBRARY 'libdb2rcjdbc.a';
注意:JDBC 包装器只支持受防护(Fenced)模式。
2) 创建联邦服务器
此过程包括以下步骤:
a) 下载远端数据源的 JDBC 驱动程序包。
b) 将 JDBC 驱动程序包路径加入到服务器选项 DRIVER_PACKAGE 或加到系统环境变量 CLASSPATH(串行模式下)或 db2profile(并行模式下)中。
c) 设置服务器选项 DRIVER_CLASS 为对应 JDBC 驱动类。
d) 设置 URL 为 JDBC 连接字符串。
16. ODBC 包装器配置原理
ODBC wrapper 通常通过 ODBC 的驱动管理器来连接远端数据源,如图 1 所示。配置过程通常包含两部分:
1)ODBC wrapper 到 ODBC 的驱动管理器之间的配置,相应的配置文件是 :
<db2_instance_home>/sqllib/cfg/db2dj.ini
其中各变量的含义如下:
- DJX_ODBC_LIBRARY_PATH:指定了 ODBC 驱动管理器的库文件所在的库目录路径。
- ODBCINI (Datadirect ODBC 驱动管理或其他 ODBC 驱动管理器 ): 指定了 ODBC 驱动管理器配置文件 (odbc.ini) 路径。
- LD_LIBRARY_PATH ( 当 Solaris 时 ): 当联邦服务器运行在 Solaris 平台上,需要设置该变量为 ODBC 驱动管理器的库文件所在的库目录路径。
- DB2LIBPATH:当 ODBC 驱动程序库(通常为设置在 odbc.ini 文件中的 DRIVER 属性值)与 ODBC 驱动管理器库文件不在同一目录下或者该驱动程序库依赖于其他库文件时,需要设置该驱动程序库和依赖库的所在目录路径。一般情况可以省略。
2)ODBC 的驱动管理器到 ODBC 指定连接的数据源驱动之间的配置,相应的配置文件是:
odbc.ini
例如:
[ODBC data sources] mssqlserver=Microsoft SQL Server 2000 [ODBC] Trace=0 TraceDll=/usr/opt/ibm/WSII/odbc/lib/odbctrac.so InstallDir=/usr/opt/ibm/WSII/odbc quotedID=yes [Microsoft SQL Server] Driver=/usr/opt/ibm/WSII/odbc/lib/VMmsss22.so Description=Microsoft SQL Server Driver for AIX Database=database_name Address=ip_addr,port_number |
详细配置请参考下列链接:
使用 IBM 嵌入式 ODBC 数据源驱动:
“Use of IBM® branded DataDirect® ODBC drivers with WebSphere® Federation Server” 。
配置联邦数据库 V9 版本的 ODBC 数据源驱动:
配置联邦数据库 V9.5 版本及以后版本的 ODBC 数据源驱动:
注意:有些数据源的 ODBC 驱动并不需要 ODBC 的驱动管理器,如经典联邦服务器的 ODBC 驱动,对应的配置文件为 cac.ini,详细请查看以下链接:
IBM DB2 9 信息中心 —— “Configuring ODBC access to WebSphere Classic Federation Server for z/OS data sources” 部分。
17. 如何解决普通代码页转换的问题?
1) ODBC 包装器
设置服务器选项 CODEPAGE,指定 ODBC 客户端的代码页。可以设置的代码页如下链接:
IBM DB2 9 信息中心 —— “受支持的地域代码和代码页” 部分。
2) Microsoft SQL Server 包装器
设置服务器选项 CODEPAGE,指定 Microsoft SQL Server 客户端的代码页。
3) Oracle 包装器
如果在 db2dj.ini 文件中设置 NLS_LANG 环境变量 , 包装器会使用该代码页。
如果没有设置 NLS_LANG,包装器会根据 DB2 的区域代码和代码页选择对应的 Oracle 地区代码进行设置。若没有对应的代码页,Oracle 包装器会默认 NLS_LANG 的值为 American_America.US7ASCII。
4) Teradata 包装器
如果在 db2dj.ini 文件中设置 TERADARA_CHARSET 环境变量,包装器会使用该代码页。若该值不是有效值,Teradata 包装器会返回错误。
如果没有设置 TERADARA_CHARSET,包装器会根据 Teradata 客户端字符集设置代码页。
5) Sybase 包装器
如果在 db2dj.ini 文件中设置 SYBASE_CHARSET 环境变量,包装器会使用该代码页,你可以在 $SYBASE\charsets 目录下查看所有 Sybase 支持的字符集。若该值不是有效值,Teradata 包装器会返回错误。
如果没有设置 SYBASE_CHARSET,包装器会根据 DB2 字符集相对应的 Sybase 字符集设置代码页。若没有相对应的代码页,Sybase 包装器会默认 iso_1 字符集。
6) Informix 包装器
对于 Informix 的代码页转换,可以通过设置一下环境变量 CLIENT_LOCALE、DB_LOCALE 和 DBNLS 来实现:
a) CLIENT_LOCALE
如果在 db2dj.ini 文件中设置 CLIENT_LOCALE 环境变量,包装器会使用该代码页。
如果没有设置 CLIENT_LOCALE,包装器会根据 DB2 的区域代码和代码页选择对应的 Informix 地区代码进行设置。若没有对应的代码页,Informix 包装器在 UNIX 平台会默认 en_us.8859-1,而在 Windows 平台上默认为 en_us.CP1252。你可以运行 glfiles 命令获取 Informix 服务器的所有有效的区域代码。根据 Informix Guide to GLS Functionality 你可以查看更多的代码页转换相关信息。
b) DB_LOCALE
该环境变量用来指定 Informix 数据库的代码页。使用后 Informix 将会按照 Infomix 数据库和客户端的代码也进行转换。例如:DB_LOCALE=Informix_db_locale_value。
c) DBNLS
指定 Informix 是否需要验证环境变量 DB_LOCALE 的值与 Informix 数据库的实际区域代码吻合。例如 DBNLS=1。
18. 需要特别注意联邦数据库的哪些配置参数或者哪些参数专门针对联邦数据库 ?
联邦数据库和 DB2 的配置参数基本相同 ( 具体可见 db2 get dbm cfg 的输出 ), 其中有三个参数对于联邦数据库而言比较特别:
Federated Database System Support (FEDERATED) = YES Number of pooled fenced processes (FENCED_POOL) = AUTOMATIC(MAX_COORDAGENTS) Bypass federated authentication (FED_NOAUTH) = NO |
其中第一个参数表明联邦数据库是否启动,第二个参数最好不要作改动,特别是不能设为 0,这样的话很可能会造成应用程序的挂起等待,第三个参数可以设为 yes 或者 no,但是设成 yes 的话默认在服务器端才进行认证。
IBM DB2 V8 信息中心 —— “fed_noauth - 绕过联合认证 配置参数” 部分。
19. 如何判断操作错误是发生在联邦数据库端还是数据源端?
当联邦数据库操作发生错误时,多数情况下,错误都是发生在远端数据源执行阶段,联邦数据库只是将远端数据源执行过程中产生的错误信息传递给用户。为了判断问题究竟出自联邦数据库还是远端数据源,用户可借助各数据源的客户端工具,将相同的 SQL 命令直接在相应数据源上执行,如果依然返回相同的错误,则可判定该错误和联邦数据库无关。表 2 是不同数据源提供的客户端工具:
| 数据源类型 | 客户端工具 | 安装途径 |
|---|---|---|
| DB2 | DB2 Command Line Processor | 联邦数据库 |
| Oracle |
Oracle Client Utility (sqlplus) | Oracle 客户端程序 |
| SQL Server |
(AIX) : DataDirect Connect for ODBC 自带的 Sample 示例程序。 (Windows) : SQL Server Management Studio. |
联邦数据库。 SQL Server Management Studio。 |
| Informix | Informix DB-Access | Informix Dynamic Server Tools |
| Sybase | Interactive SQL Parser | Sybase 客户端 |
| Teradata | Basic Teradata Query | Teradata Tools and Utilities |
| ODBC/JDBC/Non-Relational 数据源 | 依赖于具体数据源 | 依赖于具体数据源 |
20. 联邦数据库特有典型错误
以下 SQL 错误消息是和联邦数据库操作相关的典型错误信息。
1) SQL1822N
在对一个远程数据源进行操作时,联邦数据库从数据源处收到了一个意外错误符号,该符号无法被映射为对等的 DB2 错误。SQL1822N 错误由数据源端执行出错引起,并且该错误类型专属于该类型的数据源,无法被解释为相应的 DB2 错误类型。当用户遇到 SQL1822N 错误时,可通过从数据源处返回的“错误信息”对该错误进行的具体描述来确定错误类型,并进行相应的修复。
2) SQL0901N
一个不严重的系统错误引起 SQL 语句失败。后继的 SQL 语句可继续执行。
在系统正常运行情况下,用户是不应遇到 SQL0901N 错误的。如 SQL 语句返回了该错误,请联系 IBM 技术支持人员。请用户在可能的情况下搜集以下信息,它们将有助于问题的解决:
a) 问题重现步骤。
b) SQLCODE 返回值。
c) 错误信息中的 reason 信息。
d) 如果可能的话,请搜集返回的 SQLCA 内容。
e) 如果可能的话,请使用 DB2 的 Trace 工具对出错定 SQL 操作进行 trace,并提供格式化后的 trace 文件。
3) SQL1097N
无法在节点目录中找到节点名。
如果用户在对远程数据源操作时遇到该错误,说明用户当前使用的联邦数据服务器对象并不存在,或该对象中记录的远程数据源信息不正确。当遇到本错误时,用户可尝试以下修复操作:
a) 如果用户操作的是 DB2 数据源,检查 SYSCAT.SERVERS CATALOG VIEW,确认当前操作的节点名称包含在该列表中。如果没有的话,请使用 CATALOG NODE 命令,将该节点加入。
b) 如果用户操作的是非 DB2 数据源,请确定在创建联邦数据库服务器对象时所使用的 NODE 节点名称已经在相应数据源的客户端配置文件中被正确注册。例如:对于 Oracle 数据源来说,要保证该节点信息已经被注册在 Oracle 客户端配置文件 tnsnames.ora 中;对于 ODBC 和 SQL Server 数据源来说,要保证该节点信息已经被注册在 ODBC 客户端配置文件 odbc.ini 中。
4) SQL30080
当向远端数据源发送数据或从远端数据源接收数据时,发生了一个通讯错误。
当联邦数据库操作遇到该错误时,后续操作将无法进行,联邦数据库连接远端数据源的尝试失败,当前执行的事务将被回滚。多种原因可能引发该错误,但大部分情况下是由远端服务器自身问题、数据源客户端配置问题或网络问题引起。当遇到该问题时,客户可采取以下方式来诊断具体出错原因:
a) 对于 DB2 数据源,在保证该数据源的联通性的基础上,用户还要注意,在 RE-CATALOG 一个 DB2 节点之后,联邦服务器需要重启,否则的话新 NODE 将不会生效。
b) 对于非 DB2 数据源,请尝试使用该类型数据源自带的客户端连接工具连接该数据源,从而诊断和修复由远端服务器、数据源客户端配置或网络连接问题引发的错误。
21. 联邦数据库发布的库的类别?什么情况下才需要运行 djxlink 脚本?
联邦数据库采用“包装器”机制和远端数据库系统进行交互。所有和远端数据源交互的例程都被存储在一个称作“包装器模块”的库中,联邦数据库通过调用这些例程来实现诸如连接远端数据源、发送 SQL 语句以及提取结果集的操作,从而实现了“包装器”机制。针对不同种类的数据源,联邦数据库分别提供了相应的包装器模块库。
在最新发布的 DB2 Version 9.7 的全系产品中,都默认包含了联邦数据库的 DB2 包装器模块、Informix 包装器模块和 WebSphere 包装器模块,可直接使用联邦数据库的包装器机制操作以上类型远端数据源。对于其它类型数据源的包装器模块,则需要单独购买联邦数据库产品之后才可获取。
联邦数据库包装器模块,依赖于具体数据源厂商或第三方供应商提供的数据源客户端软件来实现对数据源的访问,因此,为访问某类型的数据源,用户需同时安装该数据源的客户端软件。在联邦数据库 Version 9.7 的安装包中,已默认包含了以下数据源的客户端软件,用户无需再另行购买、安装。
- DB2 for Linux, UNIX and Windows.
- BioRS
- Flat files
- Microsoft Excel
- Microsoft SQL Sever ( 联邦数据库 For Linux/UNIX)
- Web Services
- XML
对于其它类型的数据源。用户需自行安装联邦数据库指定的客户端软件。
在 Linux/UNIX 平台上,Informix 包装器模块和 Teradata 包装器模块均使用静态链接技术来使用相应的客户端软件,因此,每次升级客户端软件后,用户都需手动运行 djxlinkInformix 或 djxlinkTeradata 脚本来链接生成新的 Informix 包装器库或 Teradata 包装器库。
22. 什么时候使用 Fenced 包装器?
DB2_FENCED 的包装器选项指定了是否使用受防护(Fenced)或者信任(Trust)模式的包装器。Fenced 模式提供了通常在以下几种情况使用 Fenced 包装器:
1) 使用 64 位的 DB2 Federation Server 数据库,但是远端数据源的客户端或数据驱动版本为 32 位,需要设置 DB2_FENCED 为 Y。
2) 希望第三方库不影响 DB2 内核的运行,选择 Fenced 模式。
23. 怎样获取联邦数据库的日志,跟踪,以及获取远端数据源的跟踪(如 ODBC 等)?
1)获取联邦数据库日志:
首次故障服务日志(其中诊断信息是以可读格式进行合并和存储的)存储在管理通知日志中。两个日志都可在指定路径中找到:
在 UNIX® 系统上,此文件位于: /u/db2/sqllib/db2dump/notifyloglevel.nfy,其中 db2 表示实例名。在 Windows® 系统上,此文件位于: x:\sqllib\db2\db2diag.log ,其中 x: 表示逻辑驱动器,db2 表示实例名。另外对于 Windows 操作系统,可以使用“事件查看器”来查看管理通知日志。
2)使用 db2trc 命令获取 DB2 跟踪
db2trc 命令控制随 DB2 提供的跟踪工具。跟踪工具记录有关操作的信息并将此信息格式化为可读格式。记住,运行跟踪时会增加开销,所以启用跟踪工具可能会影响系统性能。
3)远端数据源的跟踪
a) ODBC/Microsoft SQL Server 包装器
Unix 平台:
ODBC 的跟踪信息能够记录所有 ODBC 驱动的函数调用记录,并且创建一个日志文件。在 Linux/UNIX 操作系统,一般依赖于 ODBC 数据源管理器的实现。对于 Datadirect ODBC 的数据源驱动管理器,需要修改配置文件(通常是 odbc.ini)中的 [ODBC] 部分中的关键字 Trace 和 TraceFile,例如:
Trace=1 TraceFile=odbctrace.out |
Windows 平台请参考下列链接:
b) Teradata 包装器
NETRACE 和 COPANOMLOG 环境变量用于设置启用 Teradata 客户端的跟踪。需要设置在 db2dj.ini 文件中。NETRACE 用来指定跟踪的级别,而 COPANOMLOG 用来指定跟踪文件的路径。
c) JDBC 包装器
可以设置 JDBC 服务器选项 JDBC_LOG 为 Y 来获取 JDBC 驱动程序的日志。如果 JDBC 的驱动程序不支持记录日志,则该选项无效。
关于本文的作者
李士达,IBM软件工程师,目前在联邦数据库系统开发小组工作,主要兴趣在数据整合和信息管理技术。
王晨,IBM 软件工程师,主要从事 DB2 联邦数据库 Wrapper 部分的开发工作。
周瓒, IBM 软件工程师,从事联邦数据库开发工作;主要兴趣在主要兴趣在分布式数据库技术和3D图形学技术。
更多 FAQ 内容
如果您希望获得更多 IBM 信息管理 FAQ 相关的内容,请访问 IBM 数据库 FAQ,第 1 期、IBM 数据库 FAQ,第 2 期 和 IBM 数据库 FAQ,第 3 期。