🍊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ó
- Két rész
- 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
- Az
- Ha valaki befejez egy tranzakciót, a
LGWRilleszti be aCOMMITbejegyzé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- Tartalmazza:
- Tranzakció azonosítóját
- Fájl azonosítóját
- Fájlon belüli block azonosítóját
- Régi értéket
- Ezt használja:
- Tartalmazza:
- 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
SYSTEMnevű rollback szegmens aSYSTEMtáblatéren- Ez nem törölhető
- Ha több szegmensünk van már, a
SYSTEMcsak a rendszer tranzakciókat fogja logolni, a többit delegálja - Ha túl sok szegmens van használatban, akkor a
SYSTEMis 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
ARCHIVELOGmó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