Kihagyás

🍊le detour - Naplókezelő

This part is extremely 🍊le specific

Naplókezelő felépítése

  • Rendszerhiba után induláskor automatikusan elindul a helyreállítás-kezelő
  • A helyreállítás REDO szerint megy
    • Két rész
      • Online napló - kettő vagy több naplófájl
      • Archivált napló
  • A bejegyzéseket az SGA (System Global Area) puffereibe teszük, amit folyamatosan lemezre ír a Log Writer (LGWR)
    • Az SGA-ban az adatbáziselemek pufferei is megvannak, amiket a Database writer háttérfolyamat ír lemezre
  • Ha valaki befejez egy tranzakciót, a LGWR illeszti be a COMMIT bejegyzést
  • Online naplófájlok ciklikusan töltődnek fel
    • Feltöltjük az elsőt, másodikat, ..., majd körve érve írjuk újra az elsőt megint...
    • "Biztonság" növelése érdekében 🍊le lehetőséget ad arra, hogy a naplót több példányban, máshol is tárolhassuk
    • Multiplexelt online napló-k különböző lemezre kerülhetnek, a másolatokkal egy meghibásodás javítható
  • Archiválni lehet online naplókat, mielőtt újra elővennénk
    • Az archivált (offline) napló ezekből áll, duhx2

Naplókezelő kezelése

két fő mód van erre:

ARCHIVELOG mód

  • Minden megtelt naplót archivál, mielőtt újra felhasználná a memóriaterületét

Pro

  • Az adatbázis teljesen visszaállítható rendszer és eszközhiba esetén is
  • Az adatbázis működés közben is archiválható

Con

  • Az archivált naplók addminisztrálása exta I/O művelet

NOARCHIVELOG mód

  • A legrégebbi naplófájl kérdés nélkül felülíródik, ha megtelik

Pro

  • DBA-nak nincs további tennivalója, mert nincs mit archiválni

Con

  • Csak rendszerhiba után állítható vissza, eszközhiba után nem

Naplót a LogMiner eszközzel analizálhatjuk, amiket SQL alapú utasításokkal vezérelhetünk

Vezérlőfájl

Többek között a DBA fájlrendszeréről ls az LGWR által éppen írt naplófájl sorszámát tárolja(+metadata oc)

Of course, a multiplexelt vezérlőfájl is létezik

Rollback szegmensek

  • Undo és Redo valami cursed keveréke
  • Az undo folyamatokhoz rollback szekmens-eket használ
  • Az ugyanazon tranzakcióhoz tartozó módosítások össze vannak láncolva

Sem a user, sem az admin nem olvashatja a rollback szegmens-eket

SYS felhasználóé még akkor is, ha más valaki hozza létre

Tranzakciós tábla

  • Minden szegmenshez tartozik egy
  • Azon tranzakciók listája, amik módosításaihoz tartozó rollback szegmensek ebben a szegmensben találhatók
  • Minden rollback szegmens csak fix számú tranzakciót tud kezelni
    • Ez függ a block méretétől, ami meg függhet az OS-től
    • Amíg mi nem mondunk mást, 🍊le egyenletesen fogja a tranzakciókat szétosztani a rollback szegmensek között

Rollback rollback + helyreállítás

  • Ha egy tranzakció befejeződik, a rá mvonatkozó bejegyzések még nem törölhetők
  • Más tranzakcióknak még kellhet a tranzakció előtti érték
  • A rollback szegmensek egymás után kerülnek be
    • ha megtelik a szegmens, az elejéről tölti újra fel
    • Ha a tranzakció olyan sokáig tart, hogy a szegmens egésze kell, mégis megtelik, akkor ki kell bővíteni
  • Az adatbázis létrehozásakor automatikusan létrejön egy SYSTEM nevű rollback szegmens a SYSTEM táblatéren
    • Ez nem törölhető
    • Ha több szegmensünk van már, a SYSTEM csak a rendszer tranzakciókat fogja logolni, a többit delegálja
    • Ha túl sok szegmens van használatban, akkor a SYSTEM is automatikusan használatba kerül

Rollback helyreállítás folyamata

Napló naplózása

Mivel a rollback szegmensek is az adatbázis részét képezik, a rajtuk végrehajtott módosítások is logolni valók

Helyreállításkor fontos a műveletek kétszeres feljegyzése

Rolling forward

Visszaállítás a hiba előtti állapotra, még ha az inkonzisztens is

Rolling back

Mikor a rollback szegmens is visszaállítódott már (amiben az aktív tranzakciók utasításai vannak), akkor azok alapján minden még aktív tranzakcióra ROLLBACK utasítást hajtunk végre

Archiválás folymata

  • Eszközhibák esetére
  • Lehet teljes vagy növekvényes a mentés
  • Teljes mentés az adatfájlok, online napló és vezérlőfájljainak OS szintű mentése
  • Részleges mentés csak ARCHIVELOG módban értelmes

Konzisztens mentés

  • Az adatbázist egy konzisztens állapotában mentettük el

Ilyenkor nem kell a napló, mert a visszaállítás már tudjuk, hogy konzisztes adatbázist alkot

Nem teljes helyreállítás

  • (incomplete recovery)

Régebbi mentésből visszaállítjuk, de utána csak néhány naplóbejegyzést veszünk figyelembe, egy konkrét idő beli állapotra visszatérve így