Помощната програма ddcstrc осигурява запис на данните, обменени между DB2 Connect работната станция (от името на клиент на базата данни) и системата за управление на хоста или AS/400 сървъра на базата данни.
Като администратор на база данни (или разработчик на приложения) може да ви е полезно да разберете как работи този поток от данни, тъй като тези знания ще ви помогнат да определите произхода на определен проблем. Например, да кажем, че сте изпратили оператор CONNECT TO към хост или AS/400 сървър на база данни, но командата не е изпълнена успешно и сте получили код на връщане за неуспешно изпълнение. Ако разберете точно каква информация е предадена на системата за управление на хоста или AS/400 сървъра, може да успеете да определите причината за грешката, дори когато информацията в кода на връщане е обща. Много от проблемите се причиняват от прости потребителски грешки.
В резултат от изпълнението на ddcstrc се представят потоците данни, обменени между DB2 Connect работната станция и системата за управление на хоста или AS/400 сървъра на база данни. Данните, изпратени към хоста или AS/400 сървъра, са обозначени като SEND BUFFER (изпратен буфер), а данните, получени от хоста или AS/400 сървъра, са обозначени като RECEIVE BUFFER (получен буфер).
Ако полученият буфер съдържа SQLCA информация, ще се следва от форматирана интерпретация на тези данни и ще има етикет SQLCA. Полето SQLCODE на SQLCA e стойността без преобразуване - такава, каквато се връща от хоста или AS/400 сървъра на база данни. (Повече за преобразуването вижте в Преобразуване на SQLCODE.) Изпратеният и полученият буфер се подреждат от най-старото до най-последното в рамките на файла. Всеки буфер има:
Останалите данни в изпратения и получения буфер се разделят на пет колони, състоящи се от:
За допълнителна информация за DDM се обърнете към:
Тази команда се извиква от команден промпт на операционната система със следния синтаксис:
Фигура 9. Синтаксис на командата ddcstrc
![]() |
Забележка: | Синтаксисът на тази команда може малко да се различава в зависимост от използваната операционна система. Например / може да се използва вместо - на операционната система OS/2. |
По подразбиране е -r, -s и -c.
Забележка: | За отдалечен клиент pid може да се намери в полето Идентификатор на агент, върнато от системен монитор за базата данни. |
Помощната програма ddcstrc записва следната информация във файла на трасирането:
Забележки:
В следващите страници е представен примерен резултат, който илюстрира някои DRDA потоци данни, обменени между DB2 Connect работна станция и хост или AS/400 сървър на база данни. От гледна точка на потребителя е подадена командата CONNECT TO с помощта на процесор за обработка на команди.
Фигура 10 използва DB2 Connect Enterprise Edition Версия 7 и DB2 Universal Database за OS/390 версия 5.1 чрез APPC свързване.
Фигура 11 използва DB2 Connect Enterprise Edition Версия 7 и DB2 Universal Database за OS/390 версия 5.1 чрез TCP/IP свързване.
Фигура 10. Примерен резултат от трасиране (APPC свързване)
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 |
Фигура 11. Примерен резултат от трасиране (TCP/IP свързване)
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 |
Следната информация е приета в трасиранията:
Първият буфер съдържа командите EXCSAT (Exchange Server Attributes) и ACCRDB (Access RDB), изпратени към системата за управление на хоста или AS/400 сървъра. Изпраща ги като резултат от командата CONNECT TO.
Следващият буфер съдържа отговора, който DB2 Connect е получила от системата за управление на хоста или AS/400 сървъра на базата данни. Съдържа данните от отговора на командата за обмен на атрибутите на сървъра (EXCSATRD - Exchange Server Attributes Reply Data) и съобщението, получено в отговор на командата за достъп до RDB (ACCRDBRM - Access RDB Reply Message).
Командата EXCSAT съдържа името на работната станция на клиента, определено от обекта Име на сървър (SRBAM - Server Name), който е кодов шаблон X'116D' според DDM спецификацията. Командата EXCSAT се намира в първия буфер. В рамките на командата EXCSAT стойностите X'116DA68581A28593' (кодирани в CCSID 500) се транслират до weasel, веднага след като се отстрани X'116D'.
Освен това командата EXCSAT съдържа обекта Външно име - EXTNAM (External Name), който често се поставя в диагностичната информация на системата за управление на хоста или AS/400 сървъра на базата данни. Състои се от 20-байтов идентификатор на приложението, следван от 8-байтов идентификатор на процеса (или 4-байтов идентификатор на процес и 4-байтов идентификатор на нишка). Представя се с кодов шаблон X'115E' и в този пример неговата стойност е db2bp_32, допълнена с празни места и следвана от 0000BE5C. На UNIX-базиран клиент на базата данни тази стойност може да се съпостави с командата ps, която изпраща към стандартния изход информация за състоянието на активните процеси.
Командата ACCRDB съдържа RDB_NAME в обекта RDBNAM, който е кодов шаблон X'2110'. Командата ACCRDB е след командата EXCSAT в първия буфер. В рамките на командата ACCRDB стойностите X'2110E2C1D56DC6D9C1D5C3C9E2C3D6' се транслират до SAN_FRANCISCO, след като се премахне X'2110'. Това съответства на полето с име на базата данни приемник в DCS директорията.
Низът на отчитане има кодов шаблон X'2104' (вижте Реализиране на обратно таксуване на DB2 Universal Database за OS/390).
Кодовият набор, конфигуриран за DB2 Connect работната станция, е показан с намирането в командата ACCRDB на CCSID обекта CCSIDSBC (CCSID for single-byte characters - CCSID за еднобайтови символи) с кодов шаблон X'119C'. В този пример CCSIDSBC е X'0352', което е 850.
Ако има допълнителни обекти CCSIDDBC (CCSID for double-byte characters - CCSID за двубайтови символи) и CCSIDMBC (CCSID for mixed-byte characters - CCSID за смесени символи), съответно с кодови шаблони X'119D' и X'119E', DB2 Connect работната станция е конфигурирана да поддържа DBCS кодови страници. Тъй като примерният изходен файл не съдържа двата допълнителни кодови шаблона, работната станция не е конфигурирана за DBCS.
Забележка: | TCP/IP потоците съдържат две нови команди: ACCSEC, използвана за достъп до Мениджъра за защита и за обмен на поддържаните механизми за защита и SECCHK, която съдържа токените за автентичност, използвани при разпознаване на крайния потребител на свързването. ACCSEC и SECCHK се появяват само за TCP/IP свързвания и се намират между EXCSAT и ACCRDB. |
CCSID стойностите се връщат също така и от хоста или AS/400 сървъра на базата данни в рамките на втория буфер в съобщението за отговор на команда за достъп до RDB - ACCRDBRM (Access RDB Reply Message). Този буфер съдържа EXCSATRD, следвана от ACCRDBRM. Примерният изходен файл съдържа CCSID стойност за хоста или AS/400 сървъра на базата данни от 500 (X'01F4', SBCS CCSID).
Ако DB2 Connect не разпознае кодовата страница, която идва от хоста или AS/400 сървъра на базата данни, ще върне на потребителя SQLCODE -332 с кодовите страници на източника и приемника. Ако хоста или AS/400 сървъра на базата данни не разпознае кодовия набор, изпратен от DB2 Connect, ще върне VALNSPRM (Parameter Value Not Supported - Не поддържана стойност на параметър с DDM кодов шаблон X'1252'), който се транслира за потребителя в SQLCODE -30073.
Освен това ACCRDBRM съдържа параметъра PRDID (Product-specific Identifier - Идентификатор специфичен за продукта с кодов шаблон X'112E'). Стойността е X'C4E2D5F0F5F0F1F0'. Този шестнайсетичен низ съответства на DSN05010 в EBCDIC. Според стандартите DSN е DB2 за MVS/ESA или DB2 Universal Database за OS/390. Версията 5.1 също е посочена. ARI е DB2 за VSE и VM, SQL е DB2 Common сървър, а QSQ е DB2 Universal Database за AS/400.
За допълнителна информация можете да анализирате следващите изпратени и получени буфери. Третият буфер съдържа записване на промените. Командата commit инструктира системата за управление на хоста или AS/400 сървъра на базата данни да запише промените в текущата единица работа. Четвъртият буфер е получен от системата за управление на хоста или AS/400 сървъра на базата данни в резултат от операции комит или ролбек. Съдържа съобщението за край на единицата работа ENDUOWRM (End Unit of Work Reply Message), което показва, че е приключила текущата единица работа. В този пример съдържа null SQLCA, обозначен от DDM кодов шаблон X'2408', следван от X'FF'. Получаването на null SQLCA (X'2408FF') показва успех (SQLCODE 0). Когато полученият буфер съдържа SQLCA (възможно е null SQLCA), ddcstrc ще представи след него форматирана интерпретация на SQLCA информацията.
Фигура 12 показва пример на получен буфер, който съдържа SQLCA за грешка и форматирано представяне на SQLCA. Този SQLCA е получен в резултат от опит да се изтрият редове в несъществуваща таблица.
Фигура 12. Примерен получен буфер
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 |