Transakce
Transakce je základní dále nedělitelná jednotka zpracování dat, která musí proběhnout buď celá, nebo (v případě že je přerušena) obnovit původní stav databáze a spustit se znovu. Pokud k tomu nedojde, je ohrožena konzistence databáze.
Ukázka neošetřené transakce
Na následujícím obrázku je znázorněná nepodařená transakce, která byla uprostřed přerušena čímž narušila konzistenci databáze.

Finanční transakce, která měla převést 100Kč z jednoho účtu na druhý, byla nečekaně přerušena (výpadek proudu, pád servru,...) ve chvíli kdy z jednoho účtu odečetla 100Kč, ale na druhý už nestačila peníze přičíst. Po nahození systému však už databáze obsahuje chybu (je nekonzistentní), protože se přerušením této neošetřené transakce, ztratilo 100Kč. Pokud se transakce zopakuje znovu a úspěšně, přijde majitel účtu U1 dvakrát tolik než měl (200Kč), zatímco na účet U2 přijde jen stovka.
Zabezpečení transakcí
Aby nedocházelo k narušení konzistence databáze vlivem přerušených transakcí, jak ukazuje příklad vlevo, je třeba ošetřit tak, aby buď proběhly celé, nebo obnovily původní stav databáze a spustily se znovu.
Metoda zpožděné aktualizace
Zkopíruje si data z databáze do systémového log souboru a tyto data zpracovává. Pokud dojde k přerušení transakce v tomto momentu, nic se nestane, neboť obsah databáze nebyl změněn. Znovu se tedy načtou data z databáze do logu a znovu se začnou zpracovávat.
Jsou-li data zpracována, je výsledek uložen v logu (REDO logu) a začne se přenášet do databáze. Dojde-li k přerušení v této chvíli. Po nahození systému se spustí operace REDO, která znovu začne přenášet konzistentní výsledky z logů do databáze.
Metoda přímé aktualizace
Mění obsah databáze během výpočtů. Před zahájením si však do systémových log souboru (UNDO logu) zalohuje původní hodnoty databáze. V případě přerušení se pak z logu obnoví původní stav databáze. Operace, která po restartu systému, obnoví původní stav databáze z logů se nazýva operace UNDO.
Metoda stínového stránkování
Před zahájením transakce si původní data zálohuje do stínové tabulky (stínové stránky tabulky / stínového bloku). Pokud je transakce přerušená, obnoví se původní data ze stínové tabulky. Pokud transakce proběhla úspěšně smaže se (uvolní se pro další použití) záloha ve stínové tabulce.
Na obrázku vpravo můžeme vidět tabulku Ucet z předchozího příkladu se stínovou stránkou označenou šedě. Pokud by takto vypadala tabulka po restartu systému, obnoví se původní hodnoty ze stínu (U1=300, U2=200) a transakce převodu stovky z U1 na U2, se spustí znovu. Po úspěšně dokončené transakci se hodnoty z šedé části odstraní.
Zotavení a zálohování
Pod pojmem zotavení rozumíme zotavení databáze z nějaké chyby. Způsoby zotavení po přerušené transakci, jsme si popsali v předchozí kapitole. Jde o obnovu databáze s použitím systémových logů (UNDO log, REDO log) či stínových tabulek.
Může však nastat větší katastrofa (hackrovský útok typu DROP DATABASE, či přírodní katastrofa která odrovná fyzické úložiště dat) a my přijdeme o celou databázi, ne jen její konzistenci. Z toho důvodů je nutné databázi důkladně a pravidelně zálohovat. Zálohuje se vždy databáze ke konkrétnímu času + systémové logy, kde jsou zaznamenány změny, které se nad databázi od poslední zálohy prováděly. Z těchto dvou informací, je pak možné databázi zrekonstruovat.
Nekonzistence vzniklá při zálohování databáze:
Představme si že během transakce z prvního příkladu dojde k zálohování databáze:
čas 1: Transakce odečetla z účtu U1 100Kč
čas 2: Zálohování si uložilo U1 | 200
čas 3: Zálohování si uložilo U2 | 200
čas 4: Transakce přičetla na účet U2 100Kč
Než došlo k připsání peněz na účet U2 tabulka se zálohovala a v záloze teď chybí 100Kč.
Během zálohy databáze, se většinou zastaví transakce např. uzamčením databáze či tabulek, aby záloha proběhla v klidu celá a zamezilo se nekonzistenci zálohy viz. ukázka vpravo. Pokud není možné zastavit transakce, řeší se to rekonstrukcí stavu 'databaze v konkrétním čase' z log souboru. V log souborech pak musí být uvedeno i datum změny.