用户指南

最常见的 DB2 Connect 问题

本节列示了使用 DB2 Connect 时所遇到的连接问题的最常见症状。 在每种情况下,都为您提供:

记录:

  1. 参考您的产品的快速入门手册和最新的“发行说明”, 以获取有关推荐的软件修订级别的最新信息。

  2. 对于特定于 APPC 通信的信息和返回码组合,可能还指示了 SNA 检测码。 目前,任何与特定信息相关联的 SNA 检测码信息必须从 SNA 子系统中获得。

    有时,可以通过浏览系统日志来查看 SNA 检测码。 情况是否如此,取决于所使用的 SNA 子系统, 在某些情况下,可能需要启动 SNA 跟踪来重现问题, 以便获得检测码信息。

  3. 术语网关参见“DB2 Connect 企业版”。

SQL0965 或 SQL0969

症状

信息 SQL0965 和 SQL0969 可以与来自 DB2 通用数据库 AS/400 版、DB2 通用数据库 OS/390 版、DB2 MVS/ESA 版、DB2 VM 版”和“DB2 VSE版” 的许多不同返回码一起发出。

当您遇到任何其中一个信息时,应该在发出该信息的数据库服务器产品的文档中查找原始 SQL 代码。

解决方案

不能转换从主机数据库接收的 SQL 代码。 根据错误码来校正该问题,然后重新提交失败的命令。

在连接 (CONNECT) 期间出现 SQL1338

症状/原因

未定义符号目的地名,或者定义不正确。

例如,当使用 APPC 节点时,如果在 DB2 节点目录中指定的符号目的地名与本地 APPC 通信子系统配置中的 CPI-C 项不匹配,就会发生这种情况。

另一个原因可能是在您的机器上安装了多个 SNA 堆栈。 可能需要检查 PATH 和 LIBPATH,以确保首先引用您想使用的堆栈。

解决方案

  1. 确保在“DB2 节点”目录项中指定的“CPIC 辅助信息”简要表名与 SNA 配置相匹配(该名称是区分大小写的)。 
  2. 可能需要检查 PATH 和 LIBPATH,以确保首先引用您想使用的 SNA 堆栈。

在连接 (CONNECT) 期间出现 SQL1403N

症状

SQL1403N 提供的用户名和/或口令不正确。

解决方案

  1. 在 DB2 Connect 工作站中,用户认证失败。 确定是否应该在 DB2 Connect 工作站上认证用户。

    若允许在它上面认证,并且需要提供口令的话, 则必须确保在 CONNECT 语句中提供正确的口令。

    若不允许在它上面认证,则一定是使用 AUTHENTICATION SERVER 对系统数据库目录项进行了不正确的编目(这是未显式指定 AUTHENTICATION 时的缺省情况。)若是这种情况, 则使用 AUTHENTICATION DCS 或 CLIENT 对该项重新进行编目。

  2. 未提供要发送到目标服务器数据库的口令。 若使用 AUTHENTICATION DCS 对系统数据库目录项进行了编目, 则必须将口令从 DB2 Client 发送到目标服务器数据库中。 在某些平台上,例如 AIX,仅当口令是在 CONNECT 语句中提供的时候, 才能获得该口令。

SQL5043N

症状

未能成功启动对一个或多个通信协议的支持。 然而,成功地启动了核心数据库管理程序功能。

也许在 DB2 Connect 网关中未启动 TCP/IP 协议。 先前可能已经有成功的客户机连接。

diaglevel = 4,则 db2diag.log 可能包含类似的项, 例如:

   1997-05-30-14.09.55.321092   Instance:svtdbm5   Node:000
   PID:10296(db2tcpcm)   Appid:none
   common_communication  sqlcctcpconnmgr_child   Probe:46
   DIA3205E Socket address "30090" configured in the TCP/IP
   services file and
   required by the TCP/IP server support is being used by another
   process.

解决方案

此警告是一种症状,它表示作为远程客户机的网关的 DB2 Connect 在处理一个或多个客户机通信协议时遇到了问题。 这些协议可以是 TCP/IP、APPC 和其他协议,信息通常会指示为 DB2 Connect 定义的通信协议中的某个未正确配置。

原因通常是未定义 DB2COMM 简要表变量,或者是定义不正确。 该问题通常是 DB2COMM 变量与数据库管理程序配置中定义的名称 (例如,svcename、nname 或 tpname)之间不匹配的结果。

一种可能的情况是先前有成功的连接, 然后得到 SQL5043 错误信息,但未更改任何配置。 使用 TCP/IP 协议时,当远程系统因为某些原因而异常终止了连接, 就可能发生这种情况。发生这种情况时,连接可能仍然存在于客户机中, 通过发出下面所显示的命令,就可能复原连接,而无须进一步的操作。

与网关相连的某个客户机很有可能在 TCP/IP 端口上仍然具有一个句柄。在与网关相连的每个客户机上执行:

  1. db2 terminate
  2. db2stop

SQL30020

症状

SQL30020N 因为“分布式协议错误”而执行失败, 该错误将影响后续命令和 SQL 语句的成功执行。

解决方案

遇到此错误时,应该与服务机构联系。

检查 db2dump 目录以查找 ffdc dump (pid.000)。 然后,用 db2fdump 来格式化此转储文件, 并在结果文件查找 "ERROR"。 此处可能列示了 MVS ABEND。在此情况下,检查 MVS 控制台, 以了解进一步的信息,并在“DB2 MVS 版的信息和代码”手册中查找异常结束代码。

SQL30060

症状

SQL30060N "<authorization-ID>" 没有执行操作 "<operation>" 的特权。

解决方案

当连接至“DB2 MVS 版”或“DB2 OS/390 版”时, 未正确地更新“通信数据库”(CDB) 表。参考:

SQL30061

症状

连接至错误的主机或 AS/400 数据库服务器位置 - 找不到目标数据库。

解决方案

可能在 DCS 目录项中指定了错误的服务器数据库名。 当发生此情况时,将对应用程序返回 SQLCODE -30061。

检查 DB2 节点、数据库和 DCS 目录项。 DCS 目录项中的目标数据库名字段必须与基于平台的数据库名相对应。 例如,对于 DB2 通用数据库 OS/390 版数据库,要使用的名称应该与 “引导数据集”(BSDS) "LOCATION=locname" 字段中的名称相同, 当启动了“分布式数据设施”(DDF) 时,在 DSNL004I 信息 (LOCATION=location) 中也提供了该名称。 另见数据库概念更新数据库目录

DB2 Connect 快速入门手册还包含了示例以说明如何更新 DB2 目录。 参见描述 SNA 配置的每一章中的“更新 DB2 目录”一节, 或者参见“为 DB2 Connect 配置主机和 AS/400 数据库”一章, 和“配置 TCP/IP 连接”一节。

APPC 或 APPN 节点的正确命令是:

   db2 catalog appc node <node_name> remote <sym_dest_name> security program
   db2 catalog dcs database <local_name> as <real_db_name>
   db2 catalog database <local_name> as <alias> at node <node_name> 
                authentication dcs

TCP/IP 节点的正确命令是:

   db2 catalog tcpip node <node_name> remote <host_name_or_address>
                server <port_no_or_service_name>
   db2 catalog dcs database <local_name> as <real_db_name> 
   db2 catalog database <local_name> as <alias> at node <node_name>
                authentication dcs

要连接至数据库,您应该发出:

   db2 connect to <alias> user <user_name> using <password>

在连接 (CONNECT) 期间出现 SQL30073 并带有返回码 119C

症状

发出信息 SQL30073 时带有返回码 119C。 当目标服务器数据库不支持(通过 DB2 Connect 连接的)DB2 客户机所使用的代码页时, 就会发生此错误。代码页是从 DB2 客户机正在运行的操作环境的配置中派生出来的。

参见管理指南以获取进一步的信息。

解决方案

通常可以通过在目标服务器数据库系统上安装修订来解决此问题。 咨询适当的服务机构,以便获得并应用为此症状而建议的任何修订。

作为临时的解决方法,用户可以通过设置 DB2CODEPAGE 环境变量来覆盖缺省代码页。 检查本国语言环境或设置 DB2CODEPAGE=850。

在 UNIX 平台上,用户可以通过将 LANG 环境变量设置为不同的值来切换至不同的代码页。

带有返回码 1 的 SQL30081N

症状

症状是下列信息加上 SNA 检测码:

  db2 connect to <database name> user <userid>
  为 <userid> 输入口令:
  SQL30081N  检测到通信错误。
  所使用的通信协议:"APPC"。
  所使用的通信 API:"CPI-C"。
  检测到错误位置:""。
  检测到错误通信函数:"cmallc"。
  特定于协议的错误码:"1"、"*"、"0x10030021"。
  SQLSTATE=08001

解决方案

在此样本中,检测码为 10030021。

与此错误相关联的最常见的检测码,以及在每种情况下建议的解决方案, 如下所示:

  1. SQL30081N,带有返回码 1 和 SNA 检测码 0877002C
    

    指定了错误的网络名。

  2. SQL30081N,带有返回码 1 和 SNA 检测码 ffff0003
    

    指定了错误的 MAC 地址或者 SNA 链接没有激活。

  3. SQL30081N,带有返回码 1 和 SNA 检测码 10030021
    

    LU 类型不匹配。

  4. SQL30081N,带有返回码 1 和 SNA 检测码 084B6031
    

    在 DSNZPARM 中(在“DB2 MVS 版”或“DB2 OS/390 版”主机中),MAXDBAT 被设置为 0

其他建议:

  1. 当创建“本地 LU”简要表时,将 LU 定义为缺省 LU。 例如,在 CM/2 的“SNA 功能部件”列表屏面中,执行下列一项:
  2. 检查在 DB2 Connect 网关中是否启动了 SNA
  3. 若您正在使用“DB2 MVS 版”或“DB2 OS/390 版”, 则检查是否启动了“分布式数据设施”(DDF)地址空间以及 DB2 是否正在运行。

带有返回码 2 的 SQL30081N

症状

接收到的信息 SQL30081N 带有“返回码 2”和“SNA 检测码”08120022。

解决方案

可能将 NCP(链接的主机端)中的 NUMILU 参数设置为缺省值 (0)。 检查此参数。在更改生效后,如果必要的话,重试之前修改 NCP 定义。

带有返回码 9 的 SQL30081N

症状

症状为下列信息(在此情况下,不需要 SNA 检测码):

   db2 connect to <database> user <userid>
   SQL30081N  检测到通信错误。
   所使用的通信协议:"APPC"。
   所使用的通信 API:"CPI-C"。
   检测到错误的位置:""。
   检测到错误的通信函数:"cmsend"。
   特定于协议的错误码:"9"、"*"、"0x10086021"。
   SQLSTATE=08001

解决方案

该问题是在 DB2 Connect 系统上未正确定义“事务程序名”(TPNAME)。 例如,您可能已经更新了 SNA 配置, 但是尚未在 DB2 Connect 网关中验证它。有关进一步的细节,参考 DB2 Connect Enterprise Edition for OS/2 and Windows Quick BeginningsDB2 Connect 个人版快速入门手册。

带有返回码 10 的 SQL30081N

症状

症状为下列信息(不需要 SNA 检测码):

   SQL30081N  检测到通信错误。
   所使用的通信协议:"APPC"。
   所使用的通信 API:"CPI-C"。
   检测到错误的位置:""。
   检测到错误的通信函数:"cmrcv"。
   特定于协议的错误码:"10"、"*"、"*"。
   SQLSTATE=08001

解决方案

进行检查,以确保正确安装了 DB2。

使用“ DB2 Connect OS/2 版”网关时,如果没有正确定义TP 名,将看到下列信息:

   特定于协议的错误码:"10"、"*"、"0x084C0000"。
   SQLSTATE=08001

例如,在 CM/2 中,在此情况下,它应该定义如下:

   
   事务程序名            = 'tpname'     (用户定义)
   OS/2 程序路径和文件名 = notused

以及(在下一个 CM/2 配置屏幕上)

   显示类型 - 背景
   操作类型 - 排队,预装入运算符

带有返回码 20 的 SQL30081N

症状

   SQL30081N  检测到通信错误。
   所使用的通信协议:"APPC"。
   所使用的通信 API:"CPI-C"。
   检测到错误的位置:""。
   检测到错误的通信函数:"xcstp"。
   特定于协议的错误码:"20"、"*"、"*"。
   SQLSTATE=08001

解决方案

确保在 DB2 Connect 系统上启动了 SNA 子系统。

带有返回码 27 的 SQL30081N

症状

接收到的信息 SQL30081N 带有“返回码 27”和“SNA 检测码”800Axxxx。

解决方案

VTAM 路径信息单元 (PIU) 太大。

带有返回码 79 的 SQL30081N

症状

   SQL30081N  检测到通信错误。
   所使用的通信协议: "TCP/IP"。
   所使用的通信 API:"SOCKETS"。
   检测到错误的位置:""。
   检测到错误的通信函数:"connect"。
   特定于协议的错误码:"79"、"*"、"*"。
   SQLSTATE=08001

解决方案

当远程客户机未能与 DB2 Connect 网关相连时, 就可能发生此错误。当从 DB2 Connect 网关连接至主机时,也会发生此错误。

  1. 在 DB2 Connect 网关上,DB2COMM 简要表变量可能设置不正确。 检查此变量。例如,当在 AIX 上运行“DB2 扩充企业版”时, 命令 db2set db2comm=tcpip 应该出现在 sqllib/db2profile 中。
  2. DB2 客户机中的 TCP/IP 服务名和/或端口号规范与 DB2 Connect 网关中的不匹配。 在以上两种机器中都验证 TCP/IP services 文件中的各项。
  3. 检查在 DB2 Connect 网关中是否启动了 DB2。 使用以下命令来将“数据库管理程序配置”diaglevel 设置为 4:
       db2 update dbm cfg using diaglevel 4
    
    在停止并重新启动 DB2 之后,查看 db2diag.log 文件, 以便检查是否已经启动了 DB2 TCP/IP 通信。 您应该看到与下列信息类似的输出:
       1998-02-03-12.41.04.861119   Instance:svtdbm2   Node:00
       PID:86496(db2sysc)   Appid:none
       common_communication  sqlcctcp_start_listen   Probe:80
       DIA3000I "TCPIP" protocol support was successfully started.
    

带有特定于协议的错误码 10032 的 SQL30081N

症状

   SQL30081N  检测到通信错误。
   所使用的通信协议: "TCP/IP"。
   所使用的通信 API:"SOCKETS"。
   检测到错误的位置:"9.21.85.159"。
   检测到错误的通信函数:"send"。
   特定于协议的错误码:"10032"、"*"、"*"。
   SQLSTATE=08001

解决方案

当试图与 TCP/IP 通信已经发生故障的机器断开连接时, 可能会接收到此错误信息。用 TCP/IP 子系统校正该问题。

在大多数机器上,只须对机器重新启动 TCP/IP 协议就可以校正该问题。 有时可能需要重新启动整个机器。


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