Arcsynchro - pomôcka pre synchronizáciu archívov

Arcsynchro - pomôcka pre synchronizáciu archívov

Aplikácia arcsynchro je samostatný program (súbor arcsynchro.exe sa nachádza v inštalačnom adresári v podadresári Bin). Spúšťa sa ručne z príkazového riadku. Na spustenie potrebuje iba informácie o zdrojovej a cieľovej archívnej databáze, ktoré synchronizuje (do cieľovej databázy dopĺňa záznamy zo zdrojovej). Teda nie je potrebný bežiaci proces D2000 Server ani žiadny iný proces systému D2000, iba bežiace databázové servery.


Obsah


Deklarácia

arcsynchro [voliteľné parametre] source target time_start time_end [id|+id|-id|mask] arcsynchro [voliteľné parametre] [/TD time_delta] /A source target [id|+id|-id|mask] arcsynchro [voliteľné parametre] [/TD time_delta] /AN source target arcsynchro [voliteľné parametre] [/TD time_delta] /AX source target [id|+id|-id|mask] arcsynchro [voliteľné parametre] /A+ source target [id|+id|mask] arcsynchro /CLD source target

Parametre

/SU source_user

Meno užívateľa pre source (potrebné, ak je iné ako štandardné).

/SP source_password

Heslo užívateľa pre source (potrebné, ak je iné ako štandardné).

/TU target_user

Meno užívateľa pre target (potrebné, ak je iné ako štandardné).

/TP target_password

Heslo užívateľa pre target (potrebné, ak je iné ako štandardné).

source

TNS (ak je source Oracle databáza) alebo DSN (ak je source ľubovoľná databáza prístupná cez nakonfigurované ODBC) archívu, ktorý obsahuje platné archívne záznamy.

target

TNS alebo DSN archívu, v ktorom chýbajú záznamy.

time_start

Začiatok časového intervalu, v ktorom sa dopĺňajú chýbajúce archívne záznamy.

time_end

Koniec časového intervalu, v ktorom sa dopĺňajú chýbajúce archívne záznamy.

id

Identifikátor (číslo) archívneho objektu, ktorý sa bude synchronizovať. Ak je id=113, tak príslušná archívna tabuľka je DT0000113 (názvy spracúvaných archívnych tabuliek sú vypisované pri behu programu).

+id
-id
+id -id

Identifikátor (číslo) archívneho objektu, od ktorého (+id) resp. do ktorého (-id) resp. v akom intervale (+id -id) prebieha synchronizácia.
Ak je napr. +113, tak sa synchronizujú premenné s HOBJ=113 a vyšším (tabuľky DT0000113, DT0000114 atď.).
Je možné zadať aj interval pomocou +id -id, napr. +1 -999 bude synchronizovať archívne objekty s HOBJ 1 až 999.

Poznámka: Tento parameter sa dá použiť na paralelizáciu synchronizácie archívov (napr. pri napĺňaní archívu) tak, že sa paralelne spustí niekoľko arcsynchro, pričom prvý má parametre +1 -999, druhý +1000 -1999 atď. Aby sa oddelili logy paralelne spustených arcsynchro, odporúčame použiť aj parameter LOGDT.
Ďalej sa dá tento parameter použiť po prerušení práce arcsynchro (napr. v dôsledku straty konektivity na databázový server) a pokračovať od konkrétneho archívneho objektu (keďže archívne objekty sú synchronizované v poradí podľa číselných identifikátorov).

mask

Maska pre názov archivovanej premennej. V maske je možné použiť špeciálne znaky (? *), čím je možné synchronizovať zvolené premenné. Maska nie je citlivá na veľké/malé písmená.

Príklad: maske H11?E* vyhovujú premenné H11_Edo, H11re, h111Element. Nevyhovujú jej premenné H11abEdo, H11Edo, H12_edo

/A

Automatická synchronizácia archívov na základe informácií o dobách výpadkov archívu, ktoré sa nachádzajú v cieľovom archíve (tabuľka

ARC_HOLE, od verzie D2000 7.00.031).
Archív pri štarte vytvorí nový záznam v tabuľke ARC_HOLE a počas práce doň pravidelne zapisuje. Štruktúra tabuľky ARC_HOLE je nasledovná:

Stĺpec

Popis

Id

Identifikátor riadku.

From_time

Začiatok diery v archíve.

To_time

Koniec diery v archíve.

Status

Stav diery:

  • 0 - aktuálna diera (From_time sa stále zväčšuje)

  • 10 - diera v archíve aj trezore (pokiaľ je trezorovanie aktívne), ktorá potrebuje synchronizáciu

  • 15 - diera v archíve potrebuje synchronizáciu, diera v trezore uzavretá (neštandardný stav)

  • 20 - uzavretá diera v archíve, synchronizácia trezora nebola vykonaná

  • 25 - uzavretá diera v archíve aj v trezore

  • 30 - diera, ktorá bola uzavretá, ale pri synchronizácii neboli vložené žiadne hodnoty

  • -1 - blokovaná diera (nebude synchronizovaná)

Pokiaľ sa synchronizuje archív aj trezor, spracované budú diery so Status=10.
Pokiaľ sa synchronizuje iba archív, spracované budú diery so Status=10 alebo Status=15.
Pokiaľ sa synchronizuje iba trezor, spracované budú diery so Status=10 alebo Status=20.
Po úspešnej synchronizácii (ak v zdrojovom archíve nie je diera obsahujúca dieru cieľového archívu a ak je pri synchronizácii vložený aspoň 1 záznam) bude nastavený:

  • Status=15, ak sa synchronizoval iba trezor

  • Status=20, ak sa synchronizoval iba archív

  • Status=25, ak sa synchronizoval archív aj trezor

Ak nebol vložený žiadny záznam, nastaví sa Status=30, aby pri následnom spustení sa arcsynchro nepokúšal stále znovu a znovu synchronizovať tú istú dieru.

/AN

Rovnaký význam ako /A, ale neopravuje záplatami - skončí po výpise zoznamu dier, ktoré by boli synchronizované. Slúži na zistenie množstva a veľkosti dier, ktoré potrebujú synchronizáciu.

/AX

Rovnaký význam ako /A, ale Status v tabuľke ARC_HOLE po plátaní diery sa nezmení.
Poznámka: Tento parameter sa dá použiť na synchronizáciu archívov s 3 alebo viacerými inštanciami. Na zaplátanie diery v databáze1 za použitia databázy2 a databázy3 je potrebné spustiť:
arcsynchro /AX databáza2 databáza1
arcsynchro /NU /A databáza3 databáza1
Prvý riadok zapláta dieru v databáze1 dátami z databázy2, ale nechá dieru označenú ako nesynchronizovanú.
Druhý riadok zapláta (iba vkladá údaje, neaktualizuje) dieru v databáze1 dátami z databáz3 a označí dieru ako zaplátanú.
Zvyčajne stačí na plátanie diery jeden príkaz arcsynchro. Uvedený príklad dokáže zaplátať dieru, aj keď databáza2 a databáza3 obsahujú nekompletné dáta (t.j. archívy [2] a [3] mali tiež drobné výpadky počas dlhšie trvajúceho výpadku archívu [1]).

/A+

Pre každý archivovaný objekt sa synchronizuje celá jeho časová hĺbka (podľa konfigurácie objektov) až do aktuálneho času. Parameter je použiteľný pri kopírovaní celého archívu do nového archívu. Štandardne sa dá nahradiť vhodne zvolenými time_start a time_end parametrami (time_start musí byť dostatočne ďaleko v minulosti, aby pokryl najväčšiu nakonfigurovanú časovú hĺbku), ale v prípade, že zdrojový archív má vypnuté mazanie hodnôt, by takýto prístup dosynchronizoval aj staré hodnoty.
Poznámka: Konfigurácia je zisťovaná zo zdrojovej alebo cieľovej databázy (viď popis parametra /TAD).

/ATE
/ATD
/ATA

Synchronizujú sa archívne objekty so zapnutým archivovaním (/ATE, prednastavená voľba), s vypnutým (/ATD) alebo všetky (/ATA). Parameter je použiteľný pri kopírovaní celého archívu do nového archívu, pokiaľ je želané kopírovanie aj hodnôt starých archívnych objektov s vypnutým archivovaním. Pre tieto objekty sa v cieľovej databáze vytvoria príslušné tabuľky, pokiaľ neexistovali.

/TD time_delta

Veľkosť okolia diery v archíve, ktoré bude tiež synchronizované.
Pri zápise do archívu môžu prichádzať z komunikácie aj hodnoty so starším alebo novším časom ako je aktuálny. Po výpadku archivačného procesu následne chýbajú aj novšie a staršie dáta z okolia diery. Preto je možné zadaním parametra time_delta nastaviť veľkosť okolia diery (v sekundách), ktoré bude tiež synchronizované. Prednastavené time_delta= 10.

/NU

Ak sa v cieľovej archívnej databáze hodnota archívneho objektu s konkrétnym časom už nachádza (takže vloženie hodnoty zlyhá), nebude následne hodnota aktualizovaná. Parameter slúži na zrýchlenie synchronizácie, pokiaľ cieľová archívna databáza obsahuje iba diery a nie dáta s inými hodnotami, ako zdrojová databáza.

/U

Vykoná sa aktualizácia štruktúr tabuliek v archívnej databáze. Pokiaľ je aspoň jedna z tabuliek v archívnej databáze neaktuálna (napr. tabuľky ARCHIV_DEF, ARC_HOLE, UTC_OFFSET), utilita Arcsynchro bez prepínača /U skončí s chybovým hlásením. S použitím prepínača /U sa štruktúra databázy aktualizuje (to ale môže vadiť, pokiaľ by niekto omylom použil nový arcsynchro na opravenie dier v staršej aplikácii, ktorá by potom nebola schopná s upgradovaným archívom pracovať).

/UX

Bude sa pracovať aj so starými (neaktualizovanými) štruktúrami tabuliek v archívnej databáze. Tento parameter umožňuje synchronizovať dáta zo starších D2000 aplikácií (napr. D2000 verzia 8.0 bez podpory UTF8) bez potreby aktualizovať starú archívnu databázu. Toto môže byť výhodné pri príprave migrácie na novú verziu D2000, pokiaľ sa mení aj databázová platfoma pre D2000 Archiv.

/UF

Arcsynchro najskôr vykoná aktualizáciu hodnoty (update). Pokiaľ nie je v dôsledku aktualizácie modifikovaný žiaden riadok, až potom sa vykoná vloženie hodnoty (insert). Parameter je implementovaný iba v ODBC verzii.
Pozn: parameter má zmysel pre archívy na platforme PostgreSQL na minimalizáciu generovania transakčných ID (XID) pri použití DSN s nastavením "Level of rollback on errors" na hodnotu Transaction.
Pozn: pre PostgreSQL od verzie 9.5 je možné na redukciu generovania XID použiť parameter /UP.
Pozn: identickú funkcionalitu v archíve zapína parameter archívu SelectBeforeUI.

/UP

Parameter zapína použitie SQL príkazu "UPSERT" (kombinácia Insert a Update SQL príkazu), ktorý je podporovaný pre databázu PostgreSQL od verzie 9.5. V takom prípade bude vkladanie hodnôt do archívu a trezorov realizované pomocou príkazu INSERT .. ON CONFLICT .. DO UPDATE. Parameter je implementovaný iba v ODBC verzii.
Pozn: parameter má zmysel pre archívy na platforme PostgreSQL na minimalizáciu generovania transakčných ID (XID) pri použití DSN s nastavením "Level of rollback on errors" na hodnotu Transaction.
Pozn: pre staršie verzie PostgreSQL ako 9.5 je možné na redukciu generovania XID použiť parameter /UF.
Pozn: identickú funkcionalitu v archíve zapína parameter archívu Upsert.

/PO

Synchronizujú sa iba primárne archívy, nie štatistické ani vypočítané.

/TID tid

Parameter je prípustný iba vtedy, ak je zadaný aj parameter Arcsynchro - pomôcka pre synchronizáciu archívov#id (synchronizácia dát jedného objektu s konkrétnym identifikátorom).
Vtedy sa hodnoty objektu s identifikátorom Arcsynchro - pomôcka pre synchronizáciu archívov#id načítané zo zdrojovej databázy vkladajú do cieľovej archívnej databázy do tabuliek objektu s identifikátorom tid. Ak sa synchronizujú dáta do trezorov, tak sa identifikátor objektu id nahradí pri vkladaní do cieľového trezoru identifikátorom tid.
Pozn: Parameter /TID je použiteľný pri spájaní aplikácií a ich archívov, ak dochádza k zmene HOBJ objektov (ID objektu v zdrojovej aplikácii a zdrojovom archíve je iné ako v cieľovej aplikácii/archíve).

/LOGDT

Arcsynchro nebude písať do štandardného logu arcsynchro.log ale do logu s časovou značkou arcsynchro yyyy-mm-dd hh-mi-ss.log. Možnosť použitia - viď poznámka.