ddcstrc 实用程序对 DB2 Connect 工作站(代表 数据库客户机)与主机或 AS/400 数据库服务器管理系统之间 交换的数据进行了记录。
作为数据库管理员(或应用程序开发人员), 您可能会发现了解此数据流如何工作是很有用的, 因为这些知识可以帮助您确定特定问题的起源。 例如,假定您对主机或 AS/400 数据库服务器发出 CONNECT TO 数据库语句, 但是,该命令失败了,并且您接收到一个不成功的返回码。 若您准确地了解哪些信息被传送到主机或 AS/400 数据库服务器管理系统, 则您就可能确定故障的原因,即使返回的代码信息是一般的信息。 很多故障是由简单的用户错误造成的。
来自 ddcstrc 的输出列示了 DB2 Connect 工作站与主机或 AS/400 数据库服务器管理系统之间交换的数据流。 发送至主机或 AS/400 数据库服务器的数据被标记为 SEND BUFFER, 而从主机或 AS/400 数据库服务器接收的数据被标记为 RECEIVE BUFFER。
若接收缓冲区中包含 SQLCA 信息,则它将后接此数据的已格式化的解释以及带标签的 SQLCA。 SQLCA 的 SQLCODE 字段是主机或 AS/400 数据库服务器所返回的未映射的值。 (有关映射的详情。参见SQLCODE 映射。) 在文件中,发送缓冲区和接收缓冲区是按从最旧到最新的顺序来排列的。 每个缓冲区都具有:
在发送缓冲区和接收缓冲区中的其他数据被分成五列,包括:
有关 DDM 的详情,参考:
此命令是在操作系统命令提示处用以下语法调用的:
![]() |
注意: | 随着您正在使用的操作系统的不同,则此命令的语法将稍微有些不同。 例如,对于 OS/2 操作系统,可能会使用 / 来代替 -。 |
缺省值为 -r、-s 和 -c。
注意: | 对于远程客户机,可以在数据库系统监控程序所返回的“代理程序 ID”字段中找到 pid。 |
ddcstrc 实用程序将下列信息写入 tracefile:
记录:
下面的页显示了用来说明在 DB2 Connect 工作站与主机或 AS/400 数据库服务器之间交换的一些 DRDA 数据流的样本输出。 从用户的角度来看,已经使用命令行处理器发出了 CONNECT TO 数据库命令。
图 10使用基于 APPC 连接的 DB2 Connect 企业版 版本 7 和 DB2 通用数据库 OS/390 版版本 5.1。
图 11使用基于 TCP/IP 的 DB2 Connect 企业版 版本 7 和 DB2 通用数据库 OS/390 版版本 5.1。
1 DB2 fnc_data gateway_drda_ar sqljcsend (1.35.10.80) pid 95212; tid 537115484; node 0; cpid 0; sec 0; nsec 0; tpoint 177 SEND BUFFER: EXCSAT RQSDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 006AD04100010064 10410020115E8482 .j.A...d.A. .^.. .|}..........;db 0010 F282974040404040 4040404040404040 ...@@@@@@@@@@@@@ 2bp 0020 4040F0F0F0F1F7F3 C5C3000C116DA685 @@...........m.. 000173EC..._we 0030 81A2859340400013 115AC4C2F240C396 ....@@...Z...@.. asel ...]DB2 Co 0040 95958583A340F54B F200141404140300 .....@.K........ nnect 5.2....... 0050 0414440003240700 05240F0003000D11 ..D..$...$...... ................ 0060 47D8C4C2F261F6F0 F0F00085D0010002 G....a.......... .QDB2/6000.e}... 0070 007F200100162110 E2C1D56DC6D9C1D5 .. ...!....m.... ."......SAN_FRAN 0080 C3C9E2C3D6404040 40400006210F2407 .....@@@@@..!.$. CISCO ...... 0090 000D002FD8E3C4E2 D8D3C1E2C3000C11 .../............ ....QTDSQLASC... 00A0 2EE2D8D3F0F5F0F2 F0003C210437E2D8 .......... 3 DB2 fnc_data gateway_drda_ar sqljcsend (1.35.10.80) pid 95212; tid 537115484; node 0; cpid 0; sec 0; nsec 0; tpoint 177 SEND BUFFER: RDBCMM RQSDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 000AD00100010004 200E ........ . ..}....... 4 DB2 fnc_data gateway_drda_ar sqljcrecv (1.35.10.81) pid 95212; tid 537115484; node 0; cpid 0; sec 0; nsec 0; tpoint 178 RECEIVE BUFFER: ENDUOWRM RPYDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 002BD05200010025 220C000611490004 .+.R...%"....I.. ..}............. 0010 00162110E2C1D56D C6D9C1D5C3C9E2C3 ..!....m........ ....SAN_FRANCISC 0020 D640404040400005 211501000BD00300 .@@@@@..!....... O .......}.. 0030 0100052408FF ...$.. ...... 5 DB2 fnc_data gateway_drda_ar sqljmsca (1.35.10.108) pid 95212; tid 537115484; node 0; cpid 0; sec 0; nsec 0; tpoint 179 SQLCA SQLCAID: SQLCA SQLCABC: 136 SQLCODE: 0 SQLERRML: 0 SQLERRMC: SQLERRP: DSN SQLERRD[0->5]: 00000000, 00000000, 00000000, 00000000, 00000000, 00000000 SQLWARN(0->A): , , , , , , , , , , SQLSTATE: 00000 |
1 DB2 fnc_data gateway_drda_ar sqljcsend (1.35.10.80) pid 80286; tid 537125164; node 0; cpid 0; sec 0; nsec 0; tpoint 177 SEND BUFFER: EXCSAT RQSDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 006ED04100010068 10410020115E8482 .n.A...h.A. .^.. .>}..........;db 0010 F282974040404040 4040404040404040 ...@@@@@@@@@@@@@ 2bp 0020 4040F0F0F0F1F3F9 F9C5000C116DA685 @@...........m.. 0001399E..._we 0030 81A2859340400013 115AC4C2F240C396 ....@@...Z...@.. asel ...]DB2 Co 0040 95958583A340F54B F200181404140300 .....@.K........ nnect 5.2....... 0050 0514740005240700 05240F0003144000 ..t..$...$....@. .............. . 0060 05000D1147D8C4C2 F261F6F0F0F00010 ....G....a...... .....QDB2/6000.. 0070 D0410002000A106D 000611A20003003C .A.....m.......< }......_...s.... 0080 D04100030036106E 000611A200030016 .A...6.n........ }......>...s.... 0090 2110E2C1D56DC6D9 C1D5C3C9E2C3D640 !....m.........@ ..SAN_FRANCISCO 00A0 40404040000C11A1 9781A2A2A6969984 @@@@............ ....password 00B0 000A11A0A4A28599 8984009CD0010004 ................ ....userid..}... 00C0 0096200100162110 E2C1D56DC6D9C1D5 .. ...!....m.... .o......SAN_FRAN 00D0 C3C9E2C3D6404040 40400006210F2407 .....@@@@@..!.$. CISCO ...... 00E0 000D002FD8E3C4E2 D8D3C1E2C3000C11 .../............ ....QTDSQLASC... 00F0 2EE2D8D3F0F5F0F2 F0003C210437E2D8 .......... 3 DB2 fnc_data gateway_drda_ar sqljcsend (1.35.10.80) pid 80286; tid 537125164; node 0; cpid 0; sec 0; nsec 0; tpoint 177 SEND BUFFER: RDBCMM RQSDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 000AD00100010004 200E ........ . ..}....... 4 DB2 fnc_data gateway_drda_ar sqljcrecv (1.35.10.81) pid 80286; tid 537125164; node 0; cpid 0; sec 0; nsec 0; tpoint 178 RECEIVE BUFFER: ENDUOWRM RPYDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 002BD05200010025 220C000611490004 .+.R...%"....I.. ..}............. 0010 00162110E2C1D56D C6D9C1D5C3C9E2C3 ..!....m........ ....SAN_FRANCISC 0020 D640404040400005 211501000BD00300 .@@@@@..!....... O .......}.. 0030 0100052408FF ...$.. ...... 5 DB2 fnc_data gateway_drda_ar sqljmsca (1.35.10.108) pid 80286; tid 537125164; node 0; cpid 0; sec 0; nsec 0; tpoint 179 SQLCA SQLCAID: SQLCA SQLCABC: 136 SQLCODE: 0 SQLERRML: 0 SQLERRMC: SQLERRP: DSN SQLERRD[0->5]: 00000000, 00000000, 00000000, 00000000, 00000000, 00000000 SQLWARN(0->A): , , , , , , , , , , SQLSTATE: 00000 |
在跟踪中捕捉到下列信息:
第一个缓冲区中包含发送到主机或 AS/400 数据库服务器管理系统的 “交换服务器属性”(EXCSAT) 和“存取 RDB”(ACCRDB) 命令。
它将它们作为 CONNECT TO 数据库命令的结果来发送。
下一个缓冲区中包含 DB2 Connect 从主机或 AS/400 数据库服务器中接收的应答。 它包含“交换服务器属性应答数据”(EXCSATRD) 和“存取 RDB 应答信息”(ACCRDBRM)。
EXCSAT 命令包含由“服务器名”(SRVNAM) 对象指定的客户机的工作站名, 按照 DDM 规范,它是代码点 X'116D'。
EXCSAT 命令是在第一个缓冲区中。在 EXCSAT 命令内, 一旦除去了 X'116D',值 X'116DA68581A28593' (按 CCSID 500 编码)就被转换为 weasel。
EXCSAT 命令还包含 EXTNAM(外部名)对象, 通常将该对象放在主机或 AS/400 数据库管理系统上的诊断信息中。
它由 20 个字节的应用程序 ID、后接 8 个 字节的进程 ID (或者是 4 个字节的进程 ID 和 4 个字节的线程 ID)组成。 它由代码点 X'115E' 表示, 在此示例中,其值为 db2bp_32,并用空格填满,后接 0000BE5C。 在基于 UNIX 的数据库客户机上,可以将此值与 ps 命令相关联, 该命令将与活动进程有关的进程状态信息返回到标准输出中。
ACCRDB 命令包含 RDBNAM 对象中的 RDB_NAME, 它是代码点 X'2110'。
在第一个缓冲区中,ACCRDB 命令跟在 EXCSAT 命令后面。 在 ACCRDB 命令内,一旦除去了 X'2110', 值 X'2110E2C1D56DC6D9C1D5C3C9E2C3D6' 就会被转换为 SAN_FRANCISCO。 这对应于 DCS 目录中的目标数据库名字段。
计帐字符串具有代码点 X'2104'(参见在 DB2 通用数据库 OS/390 版上实现对方付费记帐)。
通过在 ACCRDB 命令中查找具有代码点 X'119C' 的 CCSID 对象 CCSIDSBC(用于单字节字符的 CCSID),就可显示为 DB2 Connect 工作站配置的代码集。 在此示例中,CCSIDSBC 为 X'0352',代码集为 850。
若存在附加对象 CCSIDDBC(双字节字符的 CCSID)和 CCSIDMBC(混合字节字符的 CCSID),它们分别具有代码点 X'119D' 和 X'119E',则该 DB2 Connect 工作站配置为支持 DBCS 代码页。 由于样本输出文件中不包括这两个附加代码点, 所以,该工作站未配置为支持 DBCS。
注意: | TCP/IP 流中包含两个新命令: ACCSEC,用来存取安全性管理程序和交换受支持的安全性机制; SECCHK,它包含用来认证连接的最终用户的认证记号。 ACCSEC 和 SECCHK 仅适用于 TCP/IP 连接, 并且在 EXCSAT 和 ACCRDB 之间执行。 |
CCSID 值也是从主机或 AS/400 数据库服务器返回的, 而且在第二个缓冲区内的“存取 RDB 回答信息”(ACCRDBRM) 中返回。 此缓冲区中包含 EXCSATRD,后接 ACCRDBRM。 样本输出文件中包含主机或 AS/400 数据库服务器系统的 CCSID 值 500 (X'01F4', SBCS CCSID)。
若 DB2 Connect 不能识别从主机或 AS/400 数据库服务器中返回的代码页, 则将对用户返回 SQLCODE -332,以及源和目标代码页。 若主机或 AS/400 数据库服务器不识别从 DB2 Connect 发送来的代码集, 则它将返回 VALNSPRM(不支持参数值,DDM 代码点为 X'1252'), 它将为用户转换为 SQLCODE -30073。
ACCRDBRM 还包含参数 PRDID(特定于产品的标识符,具有代码点 X'112E')。 该值为 X'C4E2D5F0F5F0F1F0'。 此十六进制字符串对应于 EBCDIC 中的 DSN05010。按照标准, DSN 为 DB2 MVS/ESA 版或 DB2 通用数据库 OS/390 版。还指示版本 5.1。ARI 是DB2 VSE 版和 VM 版, SQL 为 DB2 Common Server,QSQ 为 DB2 通用数据库 AS/400 版。
可以分析发送和接收缓冲区以获取附加信息。 第三个缓冲区中包含落实操作。 commit 命令将指示主机或 AS/400 数据库服务器管理系统来落实工作单元。第四个缓冲区是作为落实或回滚的结果从主机或 AS/400 数据库服务器数据库管理系统中接收的。 它包含“结束工作单元应答信息”(ENDUOWRM), 它指示当前工作单元已经结束。在此示例中,它包含一个空的 SQLCA, 由后接 X'FF' 的 DDM 代码点 X'2408' 指示。 空的 SQLCA (X'2408FF') 指示成功 (SQLCODE 0)。 当接收缓冲区中包含 SQLCA(可能是空的 SQLCA)时, ddcstrc 将在此接收缓冲区后面附加对 SQLCA 信息的格式化解释。
图 12 显示了一个包含错误 SQLCA 的接收缓冲区的示例, 以及 SQLCA 的格式化显示。此 SQLCA 是试图删除不存在的表中的行时所产生的结果。
1 DB2 fnc_data gateway_drda_ar sqljcrecv (1.35.10.81) pid 48732; tid 1; node 0; cpid 0; sec 0; nsec 0; tpoint 178 RECEIVE BUFFER: SQLCARD OBJDSS (ASCII) (EBCDIC) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0123456789ABCDEF 0000 0065D0030001005F 240800FFFFFF34F4 .e....._$.....4. ..}....^.......4 0010 F2F7F0F4C4E2D5E7 D6E3D34000E2C1D5 ...........@.... 2704DSNXOTL .SAN 0020 6DC6D9C1D5C3C9E2 C3D64040404040FF m.........@@@@@. _FRANCISCO . 0030 FFFE0C0000000000 000000FFFFFFFF00 ................ ................ 0040 0000000000000040 4040404040404040 .......@@@@@@@@@ ....... 0050 40400000000FC4C4 C3E2E4E2F14BD4E8 @@...........K.. ....DDCSUS1.MY 0060 E3C1C2D3C5 ..... TABLE 2 DB2 fnc_data gateway_drda_ar sqljmsca (1.35.10.108) pid 48732; tid 1; node 0; cpid 0; sec 0; nsec 0; tpoint 179 SQLCA SQLCAID: SQLCA SQLCABC: 136 SQLCODE: -204 SQLERRML: 15 SQLERRMC: DDCSUS1.MYTABLE SQLERRP: DSNXOTL SQLERRD[0->5]: FFFFFE0C, 00000000, 00000000, FFFFFFFF, 00000000, 00000000 SQLWARN(0->A): , , , , , , , , , , SQLSTATE: 42704 |