Je systémový proces, ktorý zabezpečuje prístup informačného systému reálneho času D2000 k údajom uloženým v externých databázových zdrojoch. Je základným prvkom pri riešení problematiky vertikálnej integrácie informačných systémov v priemyselných podnikoch.

Proces D2000 DBManager sprístupňuje externé databázové zdroje prostredníctvom štandardných ODBC ovládačov jednotlivých databázových systémov. Umožňuje čítanie aj zapisovanie dát s možnosťou riadenia prístupu.

Proces D2000 DBManager bol testovaný a mal by fungovať s týmito databázami:

  • Oracle Database (verzie 9i, 10g, 11g, 12c, 18c, 19c)
    Poznámka: odporúčame aplikovať dostupné patche na Oracle klienta aj Oracle ODBC ovládač - staršie verzie ovládača a Oracle klienta trpeli rôznymi chybami (presakovanie pamäte, nestabilita a pod.)
  • Microsoft SQL Server (verzie 2000 a vyyššie)
    Poznámka: v konkrétnej situácii dokázal UPDATE trigger ovplyvniť akciu DB(S)_UPDATE tak, že zlyhala a to kvôli tomu, že ODBC funkcia SQLRowCount vrátila 0 (napriek tomu, že k aktualizácii dát došlo). Tento prípad je možné diagnostikovať po zapnutí ladiacej kategórie RTM.DBMANAGER.UPDATE.MSSQL.0 (ak je kategória aktívna, ignoruje sa, že SQLRowCount vráti 0 zmenených riadkov).
  • Microsoft Access (verzie 2000 - XP)
  • PostgreSQL (verzie 9.x a vyššie). Dbmanager podporuje štartovací parameter /NQ na lepšiu podporu práce s PostgreSQL (citlivosť na malé/veľké písmená v názvoch tabuliek a stĺpcoch).
    Poznámka 1: v konfigurácii ODBC ovládačov pre PostgreSQL odporúčame nastaviť parameter "Level of rollback on errors" na hodnotu Statement. Nastavenie Nop spôsobí, že databázové spojenie je po ľubovolnej chybe nepoužiteľné. Nastavenie Transaction spôsobí neštandardné chovanie niektorých akcií (napr. akcia DB(S)_INSUPD vkladajúca niekoľko riadkov nevloží nič, ak pri vkladaní niektorého riadku dôjde k chybe).
    Poznámka 2: v konfigurácii ODBC ovládačov pre PostgreSQL odporúčame nastaviť parameter "Max Varchar" na dostatočne veľkú hodnotu (väčšiu ako maximálna veľkosť VARCHAR stĺpcov), v opačnom prípade môžu byť pri stránkovom prístupe dáta orezané. Podobne odporúčame nastaviť parameter "Max LongVarchar" na dostatočne veľkú hodnotu (väčšiu ako maximálna používaná veľkosť VARCHAR dát v stĺpcoch, ktorých veľkosť nie je explicitne špecifikovaná).
    Poznámka 3: v konfigurácii ODBC ovládačov pre PostgreSQL odporúčame ponechať zaškrtnutý parameter "bytea as LO" kvôli korektnej práci s BLOBmi (DB_READ_BLOB, DB_UPDATE_BLOB).
  • Sybase Anywhere (verzie 6 - 12)
  • Informix (verzia 4.10.00.16554, nutné zapnúť na záložke Advanced voľbu Scrollable Cursors a na záložke Environment nastaviť Cursor Behavior na hodnotu "1 - Preserve")
  • Firebird (verzia 2.0.4, natívny ODBC ovládač alebo ovládač od GM - Software)
    Poznámka 1: Natívny ODBC ovládač (verzia 2.0.0.148) neumožňuje editovanie v stránkovom prístupe (browser v HI, akcie PG*). Navonok editovanie funguje, ale do databázy sa zmeny nezapíšu.
    Poznámka 2: ODBC ovládač firmy GM - Software umožňuje pridávanie dát v stránkovom prístupe a editáciu, ale zobrazuje iba prvý riadok v tabuľke.

Poznámka: od verzie D2000 v 11.2.57, patche 14.1.2018 a novšie je implementovaný štartovací parameter /DBS na podporu práce s dlhými reťazcami (>4000 znakov).

Poznámka: od verzie D2000 v 22.0.74 existuje v procese D2000 DBManager ochrana voči SQL injection útokom. Ochrana generuje chybový kód "Malevolent SQL command detected" (chyba č. 666). Vypnutie ochrany je možné štartovacím parameterom /E-DBG.DBMANAGER.SANITIZE resp. za behu pomocou D2000 System Console vypnutím kategórie DBG.DBMANAGER.SANITIZE.

Od verzie D2000 v. 7.0 existuje okrem tradičnej verzie procesu D2000 DBManager aj variant, pracujúci iba s databázami Oracle (dbmanager_ora.exe). Tento variant nepoužíva ODBC rozhranie, ale pristupuje k databáze cez OCI (Oracle Client Interface) a je dostupný nielen na platforme Windows ale aj pre OpenVMS, HP-UX a Linux. Pri použití dbmanager_ora.exe konfiguračný dialóg objektu typu Databáza v položke DSN (Data Source Name) v skutočnosti obsahuje TNS (Transparent Network Substrate, viď popis súboru tnsnames.ora v dokumentácii Oracle).

Výhody použitia dbmanager_ora.exe oproti dbmanager.exe:

  • Dostupnosť aj pre platformy OpenVMS a HP-UX.
  • Možnosť stránkového prístupu k indexovo organizovaným tabuľkám databázy Oracle (IOT-index organized tables). ODBC ovládače Oracle majú chybu (testované pre verzie 9.02.00.00 až 9.02.00.06), ktorá spôsobuje pád aplikácie pri stránkovom prístupe k IOT a preto ODBC verzia procesu D2000 DBManager neumožní stránkový prístup, ak zistí, že tabuľka je IOT.
  • Menšie strácanie systémových prostriedkov: ODBC ovládače pre Oracle (testované pre verzie 9.02.00.00 až 9.02.00.06) pri cykle connect/disconnect neuvoľnia 4 handles, OCI rozhranie neuvoľní iba 1 :-).. V každom prípade odporúčame nastaviť dostatočne veľké množstvo predpripravených spojení na objekte typu Databáza, aby nedochádzalo k častému zatváraniu a otváraniu spojení.
  • Možnosť zapnutia ladiacich výpisov o stave Oracle clustera (viď parameter /DBCY).

Rôzne runtime kategórie procesu dbmanager.exe:

  • RTM.DBMANAGER.UPSERT - Na platforme PostgreSQL sa použije UPSERT (INSERT ... ON CONFLICT (...) DO UPDATE ) pri vkladaní dát akciou DB(S)_INSUPD. Túto syntax podporuje PostgreSQL od verzie 9.5.
  • RTM.DBMANAGER.UPDATE.MSSQL.0 – Na platforme Microsoft SQL Server pri aktualizácii údajov pomocou akcií DB(S)_UPDATEDB(S)_INSUPD je ignorovaných chybne vrátených 0 zmenených riadkov (v dôsledku UPDATE triggra na tabuľke).

Rôzne runtime kategórie procesu dbmanager_ora.exe:

  • RTM.DBMANAGER.STRICT_CHECK - Ak je v tabuľke stĺpec textového typu a v D2000 je tento stĺpec numerický, môže pri načítaní dôjsť k chybe konverzie na číslo (ORA_01722: invalid number). Ak je aktívna táto runtime kategória vykonáva sa prísna kontrola typov stĺpcov a pokiaľ je zistený takýto stĺpec, DbManager odmietne s tabuľkou pracovať (a log bude obsahovať chybové hlášky).
  • RTM.DBMANAGER.NO_COUNT_OVER - Pri stránkovom prístupe (akcia PG_CONNECT a browser) sa štandardne zisťuje počet záznamov pomocou načítania v rámci SQL dotazu ( COUNT(*) OVER () ). V niektorých prípadoch môže byť toto načítanie pomalšie ako spustenie explicitného dotazu (SELECT COUNT(*) FROM <table>). Konkrétny prípad sme zaznamenali na Oracle 19.21 a tabuľke s viac ako 2.6 milióna riadkov (pri veľkosti SGA 12GB). Ak je aktívna táto runtime kategória, zisťovanie počtu riadkov bude prebiehať pomocou explicitného dotazu pred samotným načítaním dát.


Blog

O procese DbManager si môžete prečítať nasledujúce blogy:



Súvisiace stránky:



1 Comment

  1. Dbmanager podporuje štartovací parameter /NQ na lepšiu podporu práce s PostgreSQL (citlivosť na malé/veľké písmená v názvoch tabuliek a stĺpcoch).

Write a comment...