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 alebo Bin64).
Slúži na:
synchronizáciu redundantných archívov: zaplátanie diery v archívnej/trezorovej databáze, ktorá vznikla vypnutím jedného z procesov D2000 Archív (napr. [1]_SELF.ARC)
migráciu archívnych/trezorových databáz medzi rôznymi databázami (Oracle, PostgreSQL, Sybase) a medzi rôznymi operačnými systémami
kopírovanie dát z archívnych databáz do trezorových a naopak
Spúšťa sa ručne z príkazového riadku alebo je spúšťané automaticky pri štarte procesom D2000 Archív na zaplátanie aktuálnej diery v archíve (viď parameter ArcsynchroAuto). 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.
Poznámka: na vytvorenie DSN vzdialenej archívnej databázy sa pre PostgreSQL dá použiť nástroj D2SMC. V kontextovom menu na položke konkrétneho archívu (štandardne SELF.ARC ) treba vybrať "Create PostgreSQL ODBC for redundant archive".
Následne je nutné zadať symbolický názov vzdialeného archívu a voliteľne názov alebo IP adresu vzdialeného servera. Ak sa nezadá, použije sa názov vzdialeného archívu zadaný v prvom riadku.
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é). Viď poznámku pri parametri /SU. | ||||||||||
/TU target_user | Meno užívateľa pre target (potrebné, ak je iné ako štandardné). Viď poznámku pri parametri /SU. | ||||||||||
/TP target_password | Heslo užívateľa pre target (potrebné, ak je iné ako štandardné). Viď poznámku pri parametri /SU. | ||||||||||
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 | Identifikátor (číslo) archívneho objektu, od ktorého (+id) resp. do ktorého (-id) resp. v akom intervale (+id -id) prebieha synchronizácia. | ||||||||||
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).
Pokiaľ sa synchronizuje archív aj trezor, spracované budú diery so Status=10.
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í. | ||||||||||
/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. | ||||||||||
/ATE | 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é. | ||||||||||
/FD future_delta | Veľkosť okolia od konca diery v archíve, ktoré bude tiež synchronizované. | ||||||||||
/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. | ||||||||||
/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. | ||||||||||
/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 id (synchronizácia dát jedného objektu s konkrétnym identifikátorom). | ||||||||||
/LOG logname | Arcsynchro nebude písať do štandardného logu arcsynchro.log ale do logu s názvom podľa parametra logname. | ||||||||||
/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. |
Parametre pre trezory
/ST trezor_dsn | DSN zdrojovej trezorovej databázy (pre Sybase). Poznámka: Ak je použitý parameter /ST, parameter source (DSN zdrojového archívu) bude ignorovaný. |
/STPG trezor_name | Meno zdrojovej trezorovej databázy (pre PostgreSQL). Zvyčajne vo formáte appname_TREZOR_n, napr. Test_TREZOR_11. Poznámka: Ak je použitý parameter /STPG, parameter source (DSN zdrojového archívu) bude použitý na pripojenie sa k PostgreSQL trezoru (aby nemuselo byť vytvorené zvlášť DSN pre každý PostgreSQL trezor). Preto musí byť source DSN zdrojového archívu, ktorý sa nachádza na rovnakom PostgreSQL serveri ako trezor. |
/TT trezor_dsn | DSN cieľovej trezorovej databázy (pre Sybase/Oracle). Poznámka: Ak sa nepodarí otvoriť prvú trezorovú databázu, arcsynchro skončí s chybou. Chyba otvorenia druhej alebo ďalšej databázy je ignorovaná (aby sa umožnilo štandardné použitie s aktuálnym a predchádzajúcim trezorom, pričom predchádzajúci už nemusí byť dostupný). |
/STO trezor_id | Pre zdrojovú databázu na Oracle: synchronizujú sa dáta z trezoru trezor_id. Parameter je použiteľný pre Oracle trezory, ktoré sú umiestnené v tej istej databáze ako archív. Parameter umožňuje naplnenie cieľovej databázy, prípadne trezorov cieľovej databázy (Oracle, PostgreSQL, Sybase) z trezoru Oracle databázy.
Pozn: Synchronizovať sa budú dáta iba z trezorov, ktoré sú namontované (aktuálny, predchádzajúci a staršie, ktoré sú namontované príkazom MOUNT_TREZOR). |
/TTO | Pre cieľovú databázu na Oracle: synchronizovať sa majú aj trezory. Parameter je použiteľný pre Oracle trezory, ktoré sú umiestnené v tej istej databáze ako archív. Ak sú trezory vo zvláštnej databáze, je nutné použiť parameter /TT trezor_dsn. |
/PTO | V cieľovej databáze sa synchronizujú iba trezory, nie samotný archív. Parameter target bude ignorovaný, pokiaľ sa použije parameter /TT trezor_dsn a nepoužije sa parameter /TAD. |
/TTP trezor_password | Heslo na pripojenie sa k cieľovej trezorovej databáze. |
/TAD | Arcsynchro použije definíciu archívnych objektov z cieľovej databázy. Štandardne sa používa definícia archívnych objektov zo zdrojovej databázy, tento prepínač je potrebný, ak je nakonfigurovaný v cieľovom Oracle archíve iný počet trezorových segmentov ako v zdrojovom archíve a synchronizujú sa dáta aj do trezorov. |
/TTPG0 mask0 | Pre cieľovú databázu na PostgreSQL: synchronizovať sa majú aj trezory. |
/FM path | Pre trezory na PostgreSQL od verzie 9.5: dáta sa do trezorov nevkladajú cez ODBC, ale vytvorí sa súbor v adresári path, v ktorom budú dáta v textovej forme. Po vložení počtu riadkov, ktorý zodpovedá štartovaciemu parametru /CM (default 1000, ale odporúčame pri použití /FM zvýšiť až na 1000000) sa pomocou PostgreSQL rozšírenia 'file_fdw' vytvorí tzv. foreign table (externá tabuľka) mapovaná na tento súbor a dáta sa vložia do trezoru z nej (upsert). Tento postup obchádza pomalosť ODBC, ktoré spracúva riadky po jednom. Podmienkou je, aby adresár path bol čitateľný pre PostgreSQL databázu (t.j. arcsynchro musí bežať na tom istom počítači ako databáza). Použitím parametra /FM sa zrýchlilo načítavanie dát v konkrétnom prípade cca 3-násobne (z 2400 na 7050 riadkov za sekundu). |
Iné parametre
/CLD | Kopírovanie obsahu tabuľky LOG_DATA.
Poznámka: Riadok 'STOP' udávajúci čas posledného zastavenia procesu D2000 Archiv nebude v tabuľke LOG_DATA v cieľovej databáze prepísaný. |
/DD | Detailné ladiace výpisy. |
/DC count | Po nastavení parametra na nenulovú hodnotu count budú na obrazovku aj do logovacieho súboru arcsynchro.log zapisované písmená 'I' resp. 'U' po vložení (Insert) resp aktualizovaní (Update) count hodnôt v archíve. |
/CM count | Commitovanie v archívnej databáze bude po count vložených/aktualizovaných hodnotách. Prednastavená hodnota tohto parametra je 1000. |
/XADC condition | Dodatočná podmienka pre ArchivDef tabuľku (tabuľka s definíciami archívnych objektov v archíve). |
Popis
Utilita Arcsynchro slúži na synchronizáciu archívnych databáz po výpadku jedného z archívov (target). Pripojí sa k archívnej databáze, ktorá obsahuje údaje (source) a údaje, ktoré sú z časového intervalu <time_start, time_end> skopíruje do cieľového archívu.
Archivované hodnoty, ktoré sa už v cieľovom archíve nachádzajú, sú prepísané (UPDATE).
Od verzie systému D2000 v7.00.031 je podporovaný mód automatickej synchronizácie, ktorá získava potrebný time_start/time_end priamo z archívu (viď popis parametra /A).
Pre verzie 7.01.025 a novšie: formát začiatočného a koncového času time_start, time_end je 'YYYY-MM-DD HH:MI:SS' a je to lokálny čas (čas užívateľa).
Pre verzie 7.01.024 (Release 65) a staršie: formát začiatočného a koncového času time_start, time_end závisí od konkrétnej databázy a operačného systému a priamo sa porovnáva s časmi v archívnej databáze. Pre databázu Oracle sa nastaví časový formát na YYYY-MM-DD HH24:MI:SS.
Po spustení vypisuje Arcsynchro informácie o synchronizácii na obrazovku ako aj do súboru arcsynchro.log v aktuálnom adresári. Tento súbor obsahuje navyše aj informácie o čase spustenia a ukončenia programu ako aj časové pečiatky všetkých oznamov.
Pre platformu Sybase je nutné vytvoriť DSN pre všetky trezory, ktoré sa majú synchronizovať.
Pre platformu Oracle udáva DSN (arcsynchro.exe) alebo TNS (arcsynchro_ora.exe) cieľovú databázu.
Príklad
Databáza Sybase pod Windows:
arcsynchro.exe dbsrvmain dbsrvbackup "2001-03-30 15:00:00" "2001-03-30 15:30:00"
Databáza Oracle:
arcsynchro_ora.exe /SU myapp_archiv /TU myapp_archiv dbsrvmain dbsrvbackup "2004-03-13 10:40" "2004-03-14 03:12:25"
Databáza Oracle so synchronizáciou trezorov:
arcsynchro_ora.exe /TTO /TAD /SU myapp_archiv /TU myapp_archiv /A dbsrvA dbsrvB
Databáza Sybase, synchronizujú sa aj dva trezory (aktuálny a predchádzajúci):
arcsynchro.exe /TT TrzCurr /TT TrzPrev dbsrvmain dbsrvbackup "2004-03-13 10:40" "2004-03-14 03:12:25"
Databáza Oracle, synchronizujú sa všetky dostupné trezory (aktuálny, predchádzajúci a staršie trezory pripojené na zápis):
arcsynchro_ora.exe /TTO /SU myapp_archiv /TU myapp_archiv dbsrvmain dbsrvbackup "2004-03-13 10:40" "2004-03-14 03:12:25"
Kopírovanie dát zo starého Sybase trezoru TrzSrc do Oracle archívu TrzDstArc a do Oracle trezorov v tomto archíve:
arcsynchro /TTO /ST TrzSrc unusedDSN TrzDstArc "2006-07-27 07:00:00" "2006-07-27 08:00:00"
Kopírovanie dát zo starého Sybase trezoru TrzSrc do Oracle archívu TrzDstArc a do Oracle trezorov v tomto archíve, pričom Oracle trezory používajú segmenty (nutný /TAD parameter):
arcsynchro /TAD /TTO /ST TrzSrc unusedDSN TrzDstArc "2006-07-27 07:00:00" "2006-07-27 08:00:00"
Automatické patchovanie archívu a trezorov na PostgreSQL, pričom nie sú použité trezorové segmenty a patchujú sa iba primárne archívy:
arcsynchro /LOGDT /PO /TTPG0 MyAPP_TREZOR_#ID# /A MyApp.Archiv.Arc2 MyApp.Archiv.PG
Návratové kódy
0 | Úspešné ukončenie programu. |
1 | Chybné parametre programu. |
2 | Chyba pripojenia sa k zdrojovej databáze zadanej parametrom Arcsynchro - pomôcka pre synchronizáciu archívov#source. |
3 | Chyba pripojenia sa k zdrojovej trezorovej databáze zadanej parametrom /ST. |
4 | Chyba pripojenia sa k cieľovej databáze zadanej parametrom Arcsynchro - pomôcka pre synchronizáciu archívov#target. |
5 | Chyba pripojenia sa k samostatnej cieľovej trezorovej databáze na platforme Oracle zadanej parametrom /TT trezor_dsn. |
6 | Chyba pripojenia sa k prvej cieľovej trezorovej databáze na platforme Sybase zadanej prvým parametrom /TT trezor_dsn. |
7 | V zdrojovej databáze Arcsynchro - pomôcka pre synchronizáciu archívov#source bola začatá, ale nebola dokončená konverzia na časové rezy. |
8 | V cieľovej databáze Arcsynchro - pomôcka pre synchronizáciu archívov#target bola začatá, ale nebola dokončená konverzia na časové rezy. |
9 | Cieľová databáza Arcsynchro - pomôcka pre synchronizáciu archívov#target nie je na platforme Oracle a použitý bol parameter /TTO. |
10 |