602SQL-┌plnß dokumentace Index   Tisk  

SystΘmovΘ tabulky popisujφcφ replikaΦnφ chyby

Tabulky se vytvo°φ v aplikaci _SYSEXT p°i prvnφm v²skytu replikaΦnφ chyby, je-li zapnut p°φznak Logovat do tabulky v zßkladnφm nastavenφ replikacφ (dialog ReplikaΦnφ parametry mφstnφho serveru).

Tabulka _REPLERRHDR

Obsahuje zßhlavφ informace o chyb∞ p°i zpracovßnφ replikaΦnφch dat

Sloupce, typy a jejich v²znam:

DT TIMESTAMP Datum z Φas vzniku chyby, zßrove≥ slou₧φ jako unikßtnφ index a odkaz do tabulky _REPLERRREC
ServerID BINARY(12) UUID zdrojovΘho serveru
ServerName CHAR(31) JmΘno zdrojovΘho serveru
Typ BOOLEAN TRUE = Chyba je v doÜl²ch datech (replikaΦnφ data se nepoda°ilo zpracovat)

FALSE = Chyba je v odesφlan²ch datech (p°iÜel paket typu zamφtnutφ replikace)

PacketNO INTEGER ╚φslo replikaΦnφho paketu

Tabulka _REPLERRREC

Obsahuje informace o zßznamu, kter² zp∙sobil chybu

Sloupce, typy a jejich v²znam:

DT TIMESTAMP Odkaz na hlaviΦku v tabulce _REPLERRHDR
ApplID BINARY(12) UUID aplikace
ApplName CHAR(31) JmΘno aplikace
TableNO SMALLINT ╚φslo tabulky
TableName CHAR(31) JmΘno tabulky
W5_UNIKEY BINARY(16) Hodnota univerzßlnφho klφΦe pro replikaci
RecRem INTEGER ╚φslo zßznamu v tabulce na zdrojovΘm serveru (je-li znßmΘ)
RecLoc INTEGER ╚φslo zßznamu na lokßlnφm serveru
RecCnf INTEGER ╚φslo zßznamu s nφm₧ je p°ichßzejφcφ zßznam v konfliktu (mß v²znam pouze v p°φpad∞ replikaΦnφho konfliktu a duplicity klφΦ∙)
DetID INTEGER Odkaz do tabulky _REPLERRATTR (mß v²znam pouze v p°φpad∞ replikaΦnφho konfliktu a duplicity klφΦ∙)
ErrNO SMALLINT K≤d chyby
ErrText CLOB Text chyby
UNIKEY BLOB Hodnota primßrnφho klφΦe (pou₧ije se pouze pokud tabulka nemß univerzßlnφ klφΦ pro replikace)

Tabulka _REPLERRATTR

Detaily replikaΦnφho konfliktu nebo duplicity klφΦ∙. Obsahuje hodnoty unikßtnφch klφΦ∙ a v p°φpad∞ replikaΦnφho konfliktu i hodnoty atribut∙, ve kter²ch je zm∞na, hodnoty jsou v textovΘ form∞.

Sloupce, typy a jejich v²znam:

DetID INTEGER Odkaz na zßznam v tabulce _REPLERRREC
AttrNO TINYINT ╚φslo atributu
AttrName CHAR(31) JmΘno atributu
RemVal CLOB Hodnota atributu na zdrojovΘm serveru
LocVal CLOB Lokßlnφ hodnota
CnfVal CLOB Hodnota v zßznamu, kter² je s p°ichßzejφcφm v konfliktu

ProgramovΘ ovlßdßnφ replikaΦnφch trigger∙ a zßpisu do logovacφch tabulek

Pro programovΘ povolenφ resp. zßkaz spouÜt∞nφ trigger∙ _ON_REPLPACKET_RECEIVED_ON_REPLPACKET_RECEIVED a zßpisu do logovacφch tabulek slou₧φ funkce Repl_GetSet_local_server_props, kterß pro parametr oper rovn²

RPLS_GET_LOGTABLES (28) vracφ stav povolenφ zßpisu do logovacφch tabulek

RPLS_SET_LOGTABLES (29) povoluje resp. zakazuje zßpis do logovacφch tabulek

RPLS_GET_REPLTRIGGERS (30) vracφ stav povolenφ spouÜt∞nφ replikaΦnφch trigger∙

RPLS_SET_REPLTRIGGERS (31) povoluje resp. zakazuje spouÜt∞nφ replikaΦnφch trigger∙

ProgramovΘ sledovßnφ v²m∞ny replikaΦnφch paket∙

Stav v²m∞ny replikaΦnφch paket∙ se zvolen²m replikaΦnφm serverem lze u₧ivatelsky zjistit na °φdicφm panelu aplikace na zßlo₧ce Popis. Pro programovΘ zjiÜt∞nφ slou₧φ klientskß API funkce Repl_GetSet_server_props, kterß pro parametr oper rovn²

RPSP_GET_LASTRCVD (7) vracφ Φφslo poslednφho p°ijatΘho paketu (integer)

RPSP_GET_LASTSNDD (8) vracφ Φφslo poslednφho odeslanΘho paketu (integer)

RPSP_GET_LASTACKD (9) stav p°φznaku "DoÜlo potvrzenφ poslednφho paketu" (Boolean)

P°φznak m∙₧e mφt tyto hodnoty:

FALSE (0) Poslednφ paket byl odeslßn, potvrzenφ zatφm nep°iÜlo

TRUE (1) Poslednφ paket byl potvrzen

NONEBOOLEAN (128) Poslednφ paket byl zamφtnut (d∙vod zamφtnutφ, lze odchytit pomocφ systΘmovΘho triggeru _ON_REPLPACKET_RECEIVED nebo najφt v tabulkßch _REPLERRHDR a _REPLERRREC)

Programovß reakce na chyby replikacφ

Reakci na chyby replikaci, tj. pokud nep°iÜlo potvrzenφ odeslanΘho paketu nebo pokud p°iÜlo zamφtnutφ replikaΦnφho paketu, umo₧≥ujφ funkce: Repl_resend_packet a Repl_cancel_packet.

Pokud nep°iÜlo potvrzenφ poslednφho paketu, je mo₧nΘ zavolat funkci Repl_resend_packet, ta v takovΘmto p°φpad∞ odeÜle prot∞jÜφmu serveru dotaz na stav, prot∞jÜφ server vrßtφ Φφslo naposledy p°ijatΘho paketu a mφstnφ server podle toho jestli:

Pokud p°ijde zamφtnutφ replikaΦnφho paketu, je mo₧nΘ bu∩ odstranit p°φΦinu odmφtnutφ (zpravidla duplicitu klφΦ∙ v indexu) na vzdßlenΘm serveru a zavolat funkci Repl_resend_packet a ta znovu odeÜle odmφtnut² paket. Nebo je mo₧nΘ odstranit p°φΦinu odmφtnutφ na mφstnφm serveru, zavolat funkci Repl_cancel_packet, kterß zruÜφ zamφtnut² paket a zm∞nφ stav serveru jako by se poslednφ paket v∙bec neodesφlal, a potom znovu vyvolat p°ereplikovßnφ zm∞n.

Funkcφm Repl_resend_packet a Repl_cancel_packet odpovφdajφ tlaΦφtka Znovu odeslat a ZruÜit paket na °φdicφm panelu aplikace.