Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.
Komentár: Vrátené z verzie 2

...

Proces D2000 DBManager ponúka niekoľko úrovní debugovania:

Kotva
vypisy_chyb
vypisy_chyb
Výpisy chýb

...

Log informuje, že databáza TestDb má päť spojení, z toho štyri sú netransakčné, jedno transakčné a žiadne rezervované pre browser. Tri spojenia sú voľné (avail) a dve sa používajú (normal).
Zoznam všetkých možných stavov je zobrazený v tabuľke:

Kotva
stav
stav

StavPopis

Init

Spojenie je v inicializačnej fáze (vytvára sa). Prechodný stav.
AvailSpojenie je voľné.
NormalSpojenie sa používa.
LiveSpojenie prechádza zo stavu Avail do stavu Normal. Prechodný stav.
DieSpojenie sa zaviera. Prechodný stav.
ZombieSpojenie je zavreté, obslužný thread končí. Prechodný stav.

Kotva
handles
handles
Handles udáva počet deskriptorov, ktoré má DBManager otvorené. Môžu existovať štyri typy deskriptorov:

...

Interaktívne zisťovanie otvorených deskriptorov pomocou Tell príkazu SHOW_HANDLE. Syntax príkazu je:

...

Pokiaľ je Tell príkaz SHOW_HANDLE volaný bez parametrov, vypíšu sa informácie o všetkých otvorených deskriptoroch.
Výpis obsahuje pre každý deskriptor názov databázy, číslo spojenia, typ a názov deskriptora a informáciu, odkiaľ bol deskriptor otvorený.
Výpis typu a názvu deskriptora je pre rôzne typy deskriptorov zobrazený v tabuľke:

Typ deskriptoraVýpis typuNázov deskriptora
deskriptor tabuľkytableMeno objektu typu Tabuľka.
deskriptor transakcietransMeno objektu typu Databáza, na ktorej je transakcia otvorená.
deskriptor spojeniaconnectParameter connectString akcie SQL_CONNECT.
deskriptor databázydbaseMeno objektu typu Databáza, ktorý bol parametrom dbObjIdent akcie SQL_CONNECT.

Príklad výpisu:

CONO connection established (IPC_TCPIP)
Receiv TELL Command : SHOW_HANDLE
===================================================================
->Db TestDB con 1:table MAT_GROUP: <HI mycomp,S.Test_DBmanager>
->Db TestDB con 2:trans TestDB: <S.Test_DBmanager: 220>
===================================================================


D2000 DBManager má dva otvorené deskriptory. Prvý je na spojení č. 1, deskriptor je typu deskriptor tabuľky a otvorený je v browseri tabuľka MAT_GROUP. Deskriptor je otvorený zo schémy S.Test_DBmanager z procesu D2000 HI, ktorý beží na počítači mycomp.
Druhý deskriptor je na spojení č. 2, deskriptor je typu deskriptor transakcie a otvorený je z 220-eho riadku skriptu v schéme S.Test_DBmanager.

...

  • HOBJ objektu Databáza, ktorého otvorené spojenia sa majú zobraziť
  • maska názvu objektu Databáza, ktorého otvorené spojenia sa majú zobraziť
  • ID - číslo spojenia alebo číslo transakcie (vrátené ako parameter handleIdent_Int akcie DB_TRANS_OPEN), ktoré sa má zobraziť
  • parameter "DETAIL" spôsobí, že za výpisom spojenia bude nasledovať výpis deskriptorov (vo formáte ako pre SHOW_HANDLE) otvorených na tomto spojení

...

  • pre každú databázu, vyhovujúcu vstupnému filtru, jej názov a počet otvorených spojení
  • pre každé spojenie:
    • názov databázy
    • číslo spojenia
    • 4554760 stav spojenia
    • počet otvorených deskriptorov
    • dobu od poslednej vykonanej operácie (alebo slovo busy a informácie o vnútornom stave spojenia, ak na spojení práve prebieha operácia. Príklad: busy (U_EXECDIRECT1/D_EXECDIRECT2))
    • informáciu, či je spojenie transakčné, netransakčné alebo netransakčné rezervované pre browsery
    • pre transakčné spojenie aj číslo transakcie (parameter handleIdent_Int akcie DB_TRANS_OPEN)
  • pre každý deskriptor (parameter "DETAIL") výpis vo formáte SHOW_HANDLE

Príklad výpisu (spojenia v databázach začínajúcich sa na Te spolu s výpisom deskriptorov):

...

Poznámka: Pre spojenia, ktoré sú v status avail, udáva informácia o transakčnosti a číslo transakcie starý údaj (transakcia bola už ukončená). Takéto spojenie môže byť recyklované podľa potreby ako transakčné alebo netransakčné.

...

Po skončení príkazu sa vypíšu do chybového logu databázy podrobné informácie o príkaze. Príklady:


17:54:00.116 16.02 con 1:Query execution duration 00:00:01.103 SQL_CONNECT TransactId 10319, dbTransId 0, Handle 1104492764, connectString {}, DbTableId 1473 {DB.MATERIAL}, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_connect_OnClick: 248
}

...


17:54:18.926 16.02 con 1:Query execution duration 00:00:01.105 SQL_PREPARE TransactId 10320, dbTransId-1, Handle 10319, Statment {SELECT ID_MATERIAL FROM material }, bBindIn FALSE, FetchSize 1, colNr 17, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_prepare_OnClick: 279
}

...


17:55:59.113 16.02 con 2:Query execution duration 00:00:01.110 DB_TRANS_OPEN TransactId 10325, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_db_trans_open_OnClick: 543
}
  

Význam jednotlivých polí:

...

  • maska názvu objektu Databáza, ktorého spojenia sa majú monitorovať
  • minimálna dĺžka trvania databázových akcií, ktorá sa má sledovať.
    Hodnota 0 vypína sledovanie doby vykonávania databázových akcií.

Rozdiel medzi SET_WATCHDOG a SET_WATCHDOG_QUEUE je tento:
príkaz SET_WATCHDOG sleduje operácie, ktorých vykonávanie v databáze trvalo dlhšie ako špecifikovaný čas. Pokiaľ ale viacero klientov zdieľa to isté automatické (netransakčné) spojenie, z pohľadu klienta môže databázová akcia trvať dlho kvôli tomu, že čaká vo fronte, v ktorej je pred ňou ešte jedna alebo viacero databázových akcií od iných klientov. Z toho dôvodu bol implementovaný príkaz SET_WATCHDOG_QUEUE, ktorý monitoruje celkový čas vybavenia databázovej akcie od vloženia do príslušnej fronty až po ukončenie.

...

Význam jednotlivých polí: viď popis v rámci sekcie SET_WATCHDOG.

Kotva
time_statistics
time_statistics
Tell príkaz TIME_STATISTICS

...

Parametre databázy je možné nastavovať aj v procese D2000 CNF. Spojenie vytvorené akciou SQL_CONNECT obsahuje v konektovacom stringu nasledovné parametre:

Názov parametra v CNFNázov parametra v konektovacom stringu
Predpripravené spojeniaPRE=...
Maximum spojeníMAX=...
Maximum automatických spojeníNTC=...
Rezervovaných browser spojeníBRC=...
Zatvor nepoužívané spojenia po (sek)CLOSE=...
Ukonči DBManager po timeoute (min)WDC=...
DebugDEBUG
OffOFF
Maximum vrátených riadkovMR=...
Prázdne operácie po dobe nečinnostiEO=...

Príklad nastavenia doplnkových parametrov databázy v jej konektovacom stringu:

DEBUG;PRE=10;MAX=120;CLOSE=300;NTC=20;WDC=7;MR=1000

Databáza bude mať zapnuté vypisovanie debugovacích informácií do súboru DBManager.log, po štarte procesu D2000 DBManagera sa vytvorí 10 spojení na databázu, maximálny počet spojení je 120, čas zatvorenia nepoužívaného spojenia je 300 sekúnd a maximálny počet automatických spojení je 20, vnútorný watchdog ukončí proces D2000 DBManager, ak je niektoré spojenie na databázu nefunkčné (zamrznuté) viac ako 7 minút.

  • Z dôvodov optimalizácii rýchlosti a vzájomného neblokovania sa klientov vytvára proces D2000 DBManager viac ako jedno automatické spojenie na databázu. Automatické spojenia môžu byť vytvárané ihneď po štarte procesu D2000 DBManager, takže sú už predpripravené na použitie (keďže napr. u databázy Oracle môže trvať vytvorenie spojenia aj 1 sekundu alebo dlhšie, čo sa prejaví oneskorením v skriptoch ESL). Počet predpripravených spojení je možné nastaviť pomocou procesu D2000 CNF na objekte typu Databáza pomocou parametra PRE (Preconnects). Maximálny počet spojení je možné obmedziť parametrom MAX (Max connects), pričom hodnota 0 obmedzenie vypína. Ak proces D2000 DBManager spotrebuje všetky spojenia, tak ďalšie volania snažiace sa o vytvorenie spojenia (DB_TRANS_OPEN) vrátia chybu DBM_MAX_CONNECTIONS.
  • Pomocou parametra NTC je možné nastaviť maximálny počet spojení automaticky vytvorených. Pokiaľ parameter NTC nie je zadaný, tak:

    • na automatické spojenia sa použije najviac 1/4 z Max connects
    • ak je Max<4, vytvorí sa 1 automatické spojenie
    • ak je Max=0, vytvorí sa najviac 5 automatických spojení (prednastavená hodnota)

    Ak už proces D2000 DBManager dosiahol maximálny zadaný počet automatických spojení, po ďalšej požiadavke (napr. netransakčný SQL_CONNECT, PG_CONNECT alebo DB_CONNECT) sa nevytvorí nové spojenie, ale použije sa jedno z existujúcich. Parameter NTC má význam ani nie tak pre proces D2000 DBManager, ako pre databázu, ku ktorej sa pripája, aby nevyčerpal limit spojení, ktoré má databáza nastavené.
  • Z dôvodu ďalšieho zrýchlenia práce, proces D2000 DBManager
    Kotva
    recyklacia
    recyklacia
    recykluje existujúce spojenia. Ak bolo spojenie uzavreté (napr. DB_TRANS_CLOSE) alebo nie je používané (vzniklo ako dôsledok SQL_CONNECT a prebehlo SQL_DISCONNECT), tak je označené ako voľné. Voľné spojenia môžu byť opätovne využité, čo ušetrí čas pripájania sa k databáze a urýchli prácu skriptov. Voľné spojenia, ktoré nepatria medzi predpripravené a nie sú použité, budú ukončené po uplynutí času, ktorý je daný v parametri Close v sekundách(predpripravené spojenia sa neukončujú). Nastavením tohto parametra na zápornú hodnotu je možné prikázať procesu D2000 DBManager, aby voľné spojenia neukončoval - v takomto prípade bude ich množstvo iba stúpať a bude odzrkadľovať stav počas maximálnej záťaže procesu D2000 DBManager.
  • Kotva
    brc
    brc
    Kvôli zrýchleniu operácií v prístroji browser je od verzie D2000 8.00.009 možné vyhradiť pre tieto operácie (otváranie browsera, prechod medzi stránkami a akcia DB_REFRESH_TABLE) spojenia pomocou parametra BRC - Rezervované browser spojenia.
    Výhodou je, že na týchto vyhradených spojeniach nebudú vykonávané iné netransakčné operácie (ktoré môžu trvať niekoľko sekúnd a viac) a akcia DB_REFRESH_TABLE ako aj prechod medzi stránkami bude rýchlejší, ako keď sú browser operácie vykonávané na automatických spojeniach.
    Poznámka: Ak je hodnota parametra BRC - Rezervované browser spojenia rovná nule, browser operácie sú vykonávané na automatických spojeniach, ako to bolo pred implementáciou tohto parametra.
  • Kotva
    logovaci_subor
    logovaci_subor
    Ladiace a informačné výpisy: Proces D2000 DBManager umožňuje zobraziť niekoľko úrovní ladiacich výpisov, ktoré sú popísané v samostatnom dokumente.
  • Ukončovanie procesu D2000 DBManager v dôsledku "zamrznutia" niektorého spojenia: D2000 DBManager obsahuje vnútorný watchdog, ktorý každú minútu zisťuje, či niektoré spojenie na databázu nie je "zamrznuté" (t.j. obslužný thread sa nevrátil z volania ODBC rozhrania). V takomto prípade zapíše informáciu do logovacieho súboru. Ak watchdog zistí takúto situáciu n-krát po sebe (pričom n je nastaviteľné parametrom WDT), ukončí proces D2000 DBManager. Prednastavené hodnota WDT=0 znamená, že proces D2000 DBManager sa neukončuje.
  • Nastavovanie parametrov pre spojenia vytvárané pomocou príkazu SQL_CONNECT s použitím tzv. konektovacieho stringu: keďže tieto spojenia sa neviažu na objekt typu Databáza, ale priamo sa odvolávajú v konektovacom stringu na DSN, nastavenie parametrov Debug a Connect timeout je možné realizovať priamo v konektovacom stringu.

    Príklad: "UID=meno užívateľa;PWD=heslo užívateľa;DSN=meno DSN;ACD;Debug;CLOSE=300"

    Vytvorené spojenie bude mať zapnuté vypisovanie ladiacich informácií a nepoužívané spojenie sa zavrie po 300 sekundách. Voľné spojenie je možné znovu použiť iba vtedy, ak má rovnaký konektovací string ako vytvárané spojenie.

    Ladiace a informačné výpisy týchto spojení, ktoré sú "nezávislé" (independent) na objektoch typu Databáza, vyzerajú nasledovne:
    08:59:45.710 Indep# 3 DSN=TestX:SQL_FETCH BEG
    08:59:45.710 Indep# 3 DSN=TestX:SQL_FETCH END


    log informuje, že "nezávislé" spojenie č. 3, ktorého DSN je "TestX", vykonalo akciu SQL_FETCH.

    Ak aspoň jedno existujúce nezávislé spojenie má zapnuté vypisovanie ladiacich informácií prostredníctvom parametra Debug v konektovacom stringu, tak pri periodickom vypisovaní sa v logu objavia aj informácie o nezávislých spojeniach:
    09:14:27.752 Db Independent connects WD: 1 (1/0/0) cons:normal- 1,

    log informuje o tom, že existuje jediné nezávislé spojenie a to je používané.
    Čísla v zátvorkách udávajú počty netransakčných, transakčných a browser spojení.

...