A ddcstrc segédprogram rögzíti a DB2 Connect munkaállomás (az adatbázisügyfél megbízásából) valamint a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszer közötti adatcserefolyamokat.
Adatbázis adminisztrátorként (vagy alkalmazásfejlesztőként) bizonyára fontosnak tartja, hogy megértse, hogyan működik az adatáramlás, mivel ez a tudás segítségére lehet valamely probléma okának kiderítésében. Képzelje el, hogy kiadott egy CONNECT TO adatbázis utasítást a gazdagép vagy AS/400 adatbázis-kiszolgálónak, de sikertelen visszatérési kódot kapott, mert a parancs végrehajtása meghiúsult. Ha tudja, milyen információ jut el a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszerhez, még akkor is sikeresen meg tudja határozni a hiba okát, ha egyébként a visszatérési kód csupán általános információval szolgált. Sok hiba oka egyszerű felhasználói tévedés.
A ddcstrc parancs kimenete felsorolja a DB2 Connect munkaállomás valamint a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszer között kicserélt adatfolyamokat. A gazdagép vagy AS/400 adatbázis-kiszolgálóhoz küldött adatok SEND BUFFER (küldési puffer), míg a gazdagép vagy AS/400 adatbázis-kiszolgálótól jövő adatok RECEIVE BUFFER (vételi puffer) néven találhatók meg a nyomkövetésben.
Ha a vételi puffer SQLCA információt tartalmaz, az információt SQLCA néven az adat formázott értelmezése fogja követni. Az SQLCA SQLCODE mezője a gazdagép vagy AS/400 adatbázis-kiszolgáló által visszaadott, nem leképezett értéket tartalmaz. (A leképezéssel kapcsolatban további információt a SQLCODE leképezés alatt olvashat.) A küldési és vételi pufferek felsorolása a legrégebbiektől a legújabbak felé halad a fájlban. Mindegyik puffer tartalmazza a következőket:
A küldési és vételi pufferben található egyéb adatok öt oszlopot alkotnak, melyek a következők:
A DDM-ről további tájékoztatásért lásd:
A nyomkövetési parancsot a következő szintaxis betartása mellett hívhatja meg az operációs rendszer parancssorából.
ábra 9. A ddcstrc parancs szintaxisa
![]() |
Megjegyzés: | Előfordulhat, hogy ettől eltérő szintaxist kell alkalmaznia más operációs rendszereken. Például az OS/2 operációs rendszeren - helyett használhatja a / jelet is. |
Alapértelmezett paraméterek: -r, -s és -c.
Megjegyzés: | A távoli ügyfél esetében a pid az adatbázisrendszer-megfigyelő által visszaadott Ügynökazonosító mezőben található. |
A ddcstrc parancs a következő információkat írja be a nyomkövetési fájlba:
Megjegyzések:
A következő oldalakon példa kimeneti fájlokat talál, amelyek DB2 Connect munkaállomás vagy a gazdagép vagy AS/400 kiszolgáló között kicserélt adatfolyamokat követnek nyomon. A képzeletbeli felhasználó CONNECT TO adatbázis parancsot adott ki a parancsfeldolgozó használatával.
Az ábra 10 alatti példában APPC kapcsolat feletti DB2 Connect Enterprise Edition 7-es verzió és DB2 Universal Database for OS/390 5.1-es verzió szerepel.
Az ábra 11 alatti példában TCP/IP kapcsolat feletti DB2 Connect Enterprise Edition 7-es verzió és DB2 Universal Database for OS/390 5.1-es verzió szerepel.
ábra 10. Példa a nyomkövetési kimeneti fájlra (APPC kapcsolat)
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 |
ábra 11. Példa a nyomkövetési kimeneti fájlra (TCP/IP kapcsolat)
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 |
A nyomkövetési fájlból a következő információk olvashatók ki:
Az első puffer tartalmazza a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszernek elküldött Exchange Server Attributes (Kiszolgálótulajdonságok cseréje, EXCSAT) és az Access RDB (Hozzáférés RDB-hez, ACCRDB) parancsokat. A rendszer a fenti információkat a CONNECT TO parancs hatására küldi el.
A következő puffer tartalmazza azt a választ, amit a DB2 Connect kapott a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszertől. A válasz a következőkből áll: Exchange Server Attributes Reply Data (Kiszolgáló tulajdonságok cseréje válaszadat, EXCSATRD) és Access RDB Reply Message (Hozzáférés RDB-hez válaszüzenet, ACCRDBRM).
Az EXCSAT parancs tartalmazza a Server Name (Kiszolgáló név, SRVNAM) objektum által meghatározott ügyfél munkaállomás nevet, ami a DDM specifikáció szerint az X'116D' kódpontnak felel meg. Az EXCSAT parancs az első pufferben található. Az EXCSAT parancsban az X'116DA68581A28593' (CCSID 500-ban kódolt) érték fordítása az X'116D' eltávolítása után: weasel.
Az EXCSAT parancs tartalmazza az EXTNAM (External Name, Külső név) objektumot is, amely gyakran belekerül a gazdagép vagy AS/400 adatbáziskezelő rendszer diagnosztikai információjába. Ez 20 bájtos alkalmazásazonosítóból és 8 bájtos folyamatazonosítóból (vagy 4 bájtos folyamatazonosítóból és 4 bájtos szálazonosítóból) áll. A X'115E' kódpont jelöli ezt az információt. A fenti példában értéke db2bp_32, amelyet üres karakterek vesznek körül és 0000BE5C követ. UNIX alapú adatbázisügyfélen ez az érték megfeleltethető a ps parancsnak, amely az aktív folyamatokról folyamatállapot információt ír a szabványos kimenetre.
Az ACCRDB parancs tartalmazza az RDB_NAME értékét az RDBNAM objektumban, amit a X'2110' kódpont képvisel. Az ACCRDB parancs az EXCSAT parancsot követi az első pufferben. Az ACCRDB parancsban található X'2110E2C1D56DC6D9C1D5C3C9E2C3D6' érték fordítása SAN_FRANCISCO lesz a X'2110' eltávolítása után. Ez megfelel a DCS katalógusban található céladatbázis neve mezőnek.
A számlázási karakterláncot a X'2104' kódpont képviseli (lásd A költségátterheléses számlázás megvalósítása).
A DB2 Connect munkaállomáshoz beállított kódkészletet megtekintheti, ha megkeresi az ACCRDB parancsban a CCSID objektum CCSIDSBC-t (CCSID egybájtos karakterek esetében) a X'119C' kódpont mellett. Ebben a példában a CCSIDSBC X'0352', ami 850-nek felel meg.
Ha egyéb objektumok CCSIDDBC-je (CCSID kétbájtos karakterek esetén) és CCSIDMBC-je (CCSID vegyes bájtú karakterek esetén) is jelen van X'119D' és X'119E' kódpontok mellett, ez arra utal, hogy a DB2 Connect munkaállomáson be van állítva a DBCS kódlaptámogatás. Mivel a példa kimeneti fájl nem tartalmazza a két további kódpontot, a munkaállomás nincs DBCS-re konfigurálva.
Megjegyzés: | A TCP/IP folyamok két új parancsot tartalmaznak: az ACCSEC parancsot, amely hozzáférést biztosít a biztonsági kezelőhöz, és elvégzi a támogatott biztonsági mechanizmusok cseréjét, valamint a SECCHK parancsot, amely a kapcsolat végfelhasználójának hitelesítésére szolgáló hitelesítési jelsorokat tartalmazza. Az ACCSEC és SECCHK parancsok csak TCP/IP kapcsolatok esetén jelennek meg, mégpedig az EXCSAT és ACCRDB parancsok között. |
A gazdagép vagy AS/400 adatbázis-kiszolgálóról CCSID értékek is visszatérnek a második puffer Access RDB Reply Message (ACCRDBRM) válaszüzenetében. Ebben a pufferben az EXCSATRD-ot az ACCRDBRM követi. A példa kimeneti fájl a gazdagép vagy AS/400 adatbázis-kiszolgáló rendszer 500-as CCSID értékeit (X'01F4', SBCS CCSID) tartalmazza.
Ha a DB2 Connect nem ismeri fel a gazdagép vagy AS/400 adatbázis-kiszolgálótól visszatérő kódlapot, a felhasználó SQLCODE -332 üzenetet kap, amelyet a forrás és célkódlapok kísérnek. Ha a gazdagép vagy AS/400 kiszolgáló nem ismeri fel a DB2 Connect által küldött kódlapot, VALNSPRM (Parameter Value Not Supported, Nem támogatott paraméter érték, X'1252'-es DDM kódponttal) üzenetet küld vissza, amelynek lefordítása után a felhasználó az SQLCODE -30073-et kapja.
Az ACCRDBRM tartalmazza a PRDID paramétert is (Product-specific Identifier, Termékre jellemző azonosító, X'112E' kódpont). Ennek értéke X'C4E2D5F0F5F0F1F0'. Ez a hexadecimális formátumú karakterlánc EBCDIC-ben DSN05010-nek felel meg. Szabvány szerint a DSN vagy DB2 for MVS/ESA vagy DB2 Universal Database for OS/390. Megjelenik az 5.1-es verziószám is. Az ARI a DB2 for VSE & VM terméknek, az SQL a DB2 Common Server terméknek, és a QSQ a DB2 Universal Database for AS/400 terméknek felel meg.
A fenti puffereket követő küldési és vételi pufferek elemzésével további információkhoz juthat. A harmadik puffer tartalmaz egy commit parancsot. A commit parancs arra utasítja a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszert, hogy véglegesítse a jelenlegi munkaegységet. A negyedik puffer a gazdagép vagy AS/400 adatbázis-kiszolgáló kezelő rendszertől származik, amelyet a véglegesítés vagy visszagörgetés eredményeképpen küld vissza. Ez a puffer End Unit of Work Reply Message (Munkaegység befejezése válaszüzenet, ENDUOWRM) válaszüzenetet tartalmaz, amely azt mutatja, hogy a jelenlegi munkaegység lezárult. Ebben a példában a puffer egy null SQLCA-t tartalmaz, amelyet a X'2408' DDM kódpont vezet be, és X'FF' követ. A null SQLCA (X'2408FF') valaminek sikeres voltára utal (SQLCODE 0). Ha egy vételi puffer SQLCA-t tartalmaz (ez valószínűleg egy null SQLCA), a vételi puffert ddcstrc karakterlánc fogja követni az SQLCA információ formázott értelmezésével.
Az ábra 12 egy hiba SQLCA-t, valamint az SQLCA formázott megjelenítését tartalmazó vételi puffert mutat be. Ez az SQLCA annak az eredménye, hogy a képzeletbeli felhasználó megpróbált nem létező táblából sorokat törölni.
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 |