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)