Omezení velikosti LOG souborů

Top  Previous  Next

Seznam témat:

řešení

 

Řešení

Pokud není žádoucí, aby se LOG soubor zvětšil nad určitou mez, lze to níže popsaným způsobem zajistit při zachování funkce replikačního systému, který je na informacích v log souborech založen.

Princip spočívá v tom, že pomocí systémově spouštěné události v databázi se provede přejmenování LOG souboru na formát yymmddxx.log vždy, když jeho velikost překročí určitou hodnotu. Replikační agent starší logy automaticky najde a zpracuje. Pokud se ale nacházejí ve jiném adresáři než "ostré" databázové soubory (což v tomto případě nenastane), je nutné tento adresář uvést na konci příkazové řádky spouštějící dbremote.exe (nlm). Následující SQL kód zajistí přejmenování LOGu po překročení 50 MB:

create event LogLimit

type GrowLog

where event_condition('LogSize') > 50

handler

begin

 backup database

 directory ''

 transaction log only

 transaction log rename match

end

 

 

Dále je nutné v databázi nastavit parametr delete_old_logs, který povoluje replikačnímu agentovi (dbremote) smazat LOG soubor, který už k replikacím nepotřebuje (replikační offset překročil koncový offset starého logu). Viz tento příkaz:

set option public.delete_old_logs='ON'

 

Výše popsané chování začne platit ihned po provedení příkazů a není nutné databázový server restartovat.

V případě potřeby zrušit toto chování lze událost smazat příkazem:

drop event LogLimit

 

Eventuelně zakázat mazání starých logů příkazem:

set option public.delete_old_logs='OFF'

 

Související témata