VI. Témakör: Feladatok tranzakciókezelésre

 9.gyak.
>> 6.1. Adatbázisok biztonsága és felhasználói jogosultságok
>> 6.2. Oracle naplózási és archiválási rendszere és a 8HF+

10.gyak.
>> 6.3. Az Oracle konkurenciavezérlési technikája és a 9HF+
>> 6.4. MUW_ zöldkönyv feladatai a tranzakciókezelés témakörében

11.gyak.
>> II.ZH.
_______________________________________________________
9. gyak. (XI.20)
 - Helyreállíthatóság. Naplózás.

Haladó témák a relációs adatbázisok tárgykörében
>> DBA feladatai, napi teendők, felügyelet.
>> 6.1. Adatbázisok biztonsága és felhasználói jogosultságok
>> 6.2. Oracle naplózási és archiválási rendszere és a 8HF+
>> 6.3. Az Oracle konkurenciavezérlési technikája és a 9HF+

6.1. Adatbázisok biztonsága és felhasználói jogosultságok

Feladatok - Nikovits Tibor Információkezelés gyakorlatai alapján
Segédanyagok:
>> Oracle Doc. -  Administrator's Guide: HTML   PDF
>> Nikovits Tibor összefoglalói: constraint.txt   kulsojoin.txt   jogosultsagok.txt  

Feladatok:  SQL DCL (Data Control Language)

61dcl_1
   - Táblák és megszorítások (constraints) létrehozása.
   - Az alábbi feladatokhoz hozzunk létre az emp és dept tábláknak megfelelő magyar
      nyelvű (de ékezet nélküli) oszlopnevekkel rendelkező dolgozo és osztaly táblákat
      különböző megszorításokkal együtt, lásd constraint.txt.
   - Töltsük fel a táblákat a megszorításoknak eleget tevő adatsorokkal.
      Ellenőrizzük le a DBA_CONSTRAINTS katalógusban a megszorításokat.

61dcl_2
   - Nézettáblák létrehozása.
     
Hozzunk létre egy táblán illetve két tábla természetes összekapcsolásán illetve
      (baloldali, jobboldali, teljes) külső összekapcsolásán alapuló nézettáblákat.
      Figyeljük meg, hogyan hatnak az eredeti táblán végrehajtott módosítások
      a létrehozott nézettábláinkon, és fordítva, mi történik az eredeti táblánkon,
      ha a különböző nézeteket módosítjuk.
   - Például hozzunk létre egy nézettáblát, amelyik osztályonként az összfizetést
      és a dolgozók számát tartalmazza.
   - Keressük elő a megfelelő rendszertáblából a nézettáblát létrehozó utasítás
      SQL "forrás szövegét". (DBA_VIEWS)

61dcl_3
   - Külső join.
   - Hozzunk létre egy nézettáblát, amely tartalmazza a dolgozó nevét, fizetését,
     az osztály nevét és telephelyét. Azok az osztályok is jelenjenek meg, amelyeken
     még nem dolgozik senki. Az ilyen osztályokra a dolgozó neve oszlopban az  
     jelenjen meg, hogy 'FELVETEL ALATT', a fizetés oszlopban pedig
     az alapértelmezés szerinti kezdő fizetés, ami 1500. Próbáld ki a külső join
     mindkét szintaxisával (+) illetve OUTER JOIN,lásd kulsojoin.txt.

61dcl_4
   - Jogosultságok megadása és visszavonása. GRANT, REVOKE
      Adjunk különböző jogosultságokat a fenti nézettábláinkhoz,
      lásd jogosultsagok.txt.

61dcl_5
   - Erőforrások korlátok, jogosultságok.
   - a.) Hány SQL ablakot (sessiont) tudtok egyszerre megnyitni?
   - b.) Mennyi a számotokra engedélyezett maximális kapcsolódási idő?
   - c.) Hány sikertelen bejelentkezést enged az adatbáziskezelő a számotokra?

6.2. Az Oracle naplózási és archiválási rendszere

Feladatok -
Nikovits Tibor Információkezelés gyakorlatai alapján
Segédanyagok:
>> EA+GYAK anyag: ORA_Tr_Naplozas.pdf (jelszóval)
>> Oracle Doc. -  Administrator's Guide:   HTML     PDF
>> Nikovits Tibor összefoglalói: triggerek.txt     trigger_peldak.txt
      instancia.txt       instancia_inditas.txt       inic_param.txt

8HF+ Házi feladat (+pontért). Beküldése, lásd  Beadandók beküldése 
a.) Az előző feladatban létrehozott saját DOLGOZO nevű táblához hozzunk
      létre egy TRIGGER_LOG nevű táblát, aminek a következő a szerkezete:
         ( idopont     DATE,
           muvelet     VARCHAR2(20),
           esemeny     VARCHAR2(80)
          )
   - Hozzunk létre egy triggert, ami akkor aktivizálódik ha a dolgozo tábla
      fizetés oszlopát módosítják. A trigger a következő műveleteket végezze el:
   - Ha a dolgozo új fizetése nagyobb lesz mint 4000 akkor erről tegyen egy
      bejegyzést a trigger_log táblába. Az esemény oszlopba írja be a régi és
      az  új fizetést is.
   - Az elnök (foglalkozas = 'PRESIDENT') fizetését ne engedje módosítani.
     A módosítás után a fizetés maradjon a régi.
     Erről is tegyen egy bejegyzést a trigger_log táblába.
     Az esemény oszlopba írja be, hogy a fizetés nem változott.
     (TIPP: after trigger)

b.) Hozzatok létre egy TRIGGER_LOG2 nevű táblát is,
     aminek a szerkezete a következő:
         ( idopont     DATE,
           muvelet     VARCHAR2(20),
           uj_osszfiz  NUMBER
          )
   - Hozzunk létre egy triggert, ami akkor aktivizálódik ha a dolgozo táblára
     valamilyen módosító műveletet (INSERT, DELETE, UPDATE)
     hajtanak végre. A trigger irja be a TRIGGER_LOG2 táblába
     a módosítás időpontját, a műveletet és az új összfizetést.
   - Ha az új összfizetés nagyobb lenne mint 40000, akkor a trigger utasítsa
     vissza a módosító műveletet, és hibaüzenetként küldje vissza, hogy
     'Túl nagy összfizetés'. Ez esetben naplóznia sem kell.
____________________________________________________
10. gyak. (XI.27)
 - Tranzakciókezelés, konkurenciavezérlés, DML zárak 

>> 6.3. Az Oracle konkurenciavezérlési technikája és a 9HF+
>> 6.4. MUW_ zöldkönyv feladatai a tranzakciókezelés témakörében

6.3. Az Oracle konkurenciavezérlési technikája

Feladatok - Nikovits Tibor Információkezelés gyakorlatai alapján
Segédanyagok:
>> EA+GYAK anyag: ORA_Tr_Zarolas.pdf (jelszóval)
>> Oracle Doc. -  Administrator's Guide: HTML   PDF
>> Nikovits Tibor összefoglalói: tranzakciok.txt     tranz_peldak.txt
     lek_dinam_nez.txt   dinam_nezetek.txt   zarolasok.txt   autonom_tranz.txt

Feladatok:  lásd  tranz_peldak.txt (megoldásokkal)

63konk_1
   - Tranzakció-kezelés alapjai. COMMIT, ROLLBACK,SAVEPOINT
   - Nyissunk meg egyszerre két SQLPLUS ablakot (vagy sqldevelopert),
     tiltsuk le az automatikus commit-ot (SET AUTOCOMMIT OFF) és
     végezzünk olvasó és módosító műveleteket a két ablakból felváltva.
     Az előző 61dcl_2 feladatban létrehozott táblákat és nézeteket használjuk.
   - Az aktív tranzakciók futása közben adjuk meg a rendszerkatalógusok alapján
     a következő információkat a saját magunk által futtatott tranzakciókról.
     (Lásd az alábbi feladatokat itt is:  tranz_peldak.txt, megoldásokkal)
   - Melyek az aktiv tranzakciók, mikor indultak el, és ki futtatja azokat?
   - A tranzakció melyik utasítást futtatja éppen?

63konk_2
   - Melyik rollback szegmenst használják épp az aktív tranzakciók?
   - Melyik adatfájlba írják a tranzakciók a rollback blokkjaikat?

63konk_3
   - Az Oracle tranzakcióelkülönítési szintjei
   - Adjunk meg két utasítássorozatot a két ablakban úgy, hogy az egyik ablak
     a következő hibaüzenetet kapja:
     "ORA-08177: Cannot serialize access for this transaction"
     (Tipp: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;)

63konk_4
   - Holtpont kipróbálása
   - Adjunk meg olyan utasítássorozatot a két ablakban, amely holtpontra vezet.
     (Lásd például itt is:  tranz_peldak.txt, megoldásokkal)
     
63konk_5
   - Zárolások megnézése
   - Melyik session milyen típusú (sor->TX, tabla->TM) és milyen módú  
      zárolást tart fenn éppen? (RS->2, RX->3, S->4, SRX->5, X->6)
      (SID, USERNAME, TYPE, LMODE)

63konk_6
   - Melyik session vár épp egy zárolásra
      (SID, USERNAME, TYPE, LMODE, REQUEST),
      illetve melyik zárolasra vár épp valaki
      (SID, USERNAME, TYPE, LMODE, BLOCK)?

63konk_7
   - Milyen régen tartja fenn a rendszer a zárolasokat, illetve
      milyen régen vár valaki egy zárolásra?
      (SID, USERNAME, TYPE, LMODE, CTIME, REQUEST)

63konk_8
   - Mely objektumokat tartja zárolás alatt valamelyik session jelen pillanatban?

63konk_9
   - Derítsük ki (megfelelő manuális lock-oló utasítások segítségével), hogy a
     Row Exclusive (RX) módú zárolást milyen módú zárolásokkal egyidejűleg
     engedélyezi a rendszer, és mely módú zárolások esetén kell várnia a
     későbbi kérelmezőnek.

9HF+ Házi feladat (+pontért). Beküldése, lásd  Beadandók beküldése 
  - Az előző 8HF+ feladat módosítása, most a trigger akkor is naplózzon,  
     ha a túl nagy összfizetés miatt visszautasítja a módosító műveletet.
     (TIPP: autonóm tranzakció, lásd  autonom_tranz.txt)

6.4. MUW_ zöldkönyv feladatai a tranzakció-kezelés témakörében

MUW_zöldkönyv 
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
-   8.fejezet Helyreállíthatóság
-   9.fejezet Konkurenciavezérlés
- 10.fejezet Bővebben a tranzakciókezelésről
Lásd az előadások slide-okat:  Előadás tematika illetve Vizsgatételek
Feladatok és megoldások:
>> Tranzakciókezelési példák (.pdf : Katona Gyula, BME)
_______________________________________________________
11. gyak. (XII.04)
 - II.ZH.

>> Előzetes információ a II.ZH-ról (XII.4)