Kezdőlap
AB2ea
AB2gyak (főmenü) 8.gyak
10.gyak
9.gyak.
Bevezetés
a költség alapú
tervválasztásba III.
Végrehajtási tervek az Oracle demo
táblái alapján
Új témakör: Feladatok
naplózásra és
helyreállításra
C (gépes
feladatok)
> C4.
Végrehajtási tervek az Oracle demo
táblái alapján
> C5.
SQL utasítás rekonstruálása
a végrehajtási terv alapján
P (papíros feladatok)
> P4.
Rendszerhibák kezelése, UNDO
naplózás és
helyreállítás
A
gyakorlati
foglalkozások az
előadások
anyagára épülnek
8.EA: A
félig-összekapcsolás (semijoin)
és annak alkalmazása
elosztott lekérdezésekre, semijoins.ppt
QueryProcessingWithSemijoin-hu.ppt (1-8 o.)
Tranzakciókezelés,
naplózás, naplo.ppt
(1-65 o.)
-- előadáshoz kapcsolódó
további olvasmány:
Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
7.5.-7.7. Költség alapú
tervválasztás,
fizikai lekérdezésterv
kiválasztása
8.1.-8.2. A rendszerhibák kezelése,
semmisségi
(undo) naplózás
C4.
Végrehajtási
tervek az Oracle demo táblái alapján
Emlékeztető:
Oracle 11g Doc. Hintekről: 19.
Using Optimizer Hints
>> hintek.txt
A zh és
beküldendő
feladatoknál egy
szöveges állományba
bemásolva
beküldendő:
1.) SELECT
/*+ tipp lista */ ... vagyis
a lekérdezés
(hintekkel együtt),
2.) lekérdezés
outputja
("SCIPT OUTPUT"-ból az
eredménytábla első
5
sorát),
3.) végrehajtási
tervek
szöveges
megjelenítése ("EXPLAIN
PLAN OUTPUT"-ból)
-- Ehhez az
1.lépés:
Készítsük el az
utasítások végrehajtási
tervét:
EXPLAIN
PLAN FOR SELECT ...
--
2.lépés: A
végrehajtási tervek
megjelenítése a
dbms_xplan package
segítségével:
SELECT
plan_table_output FROM table(dbms_xplan.display);
Segédanyagok:
>> Oracle Database Doc. >> Sample
Schemas HTML
PDF
HR
- Human Resource: hr_sema.pdf
SH
-Sales History: sh_sema.pdf
>> Oracle 11g Doc. Performance Tuning
Guide 11-21.fejezetek HTML
PDF
>> Nikovits Tibor: hintek.txt (és HR, SH
táblái alapján) tervek4.txt
és hint_peldak.txt
Feladatok:
- A
lekérdezésekhez az Oracle demo
tábláit, a HR és SH
sémához
tartozó táblákat
használjuk, vagyis most ne hozzunk
létre saját
példányokat, hanem egy adott séma
tábláit használjuk
a
lekérdezéseknél, a
táblák
elérése: HR.<táblanév>,
SH.<táblanév>
- A táblákhoz
különböző
indexek is vannak
létrehozva, ezek tulajdonságait a
katalógusokból
(dba_ind_columns)
nézhetjük meg, amikor
szükségünk van rá.
4.1.feladat:
- Adjuk meg azoknak a vevőknek a nevét
(SH.CUSTOMERS),
akik
nőneműek (cust_gender =
'F') és szinglik
(cust_marital_status =
'single'),
vagy 1917 és 1920
között
születtek.
a) Vegyük rá az
Oracle-t, hogy a
meglévő bitmap indexek alapján érje el
a
tábla sorait.
b) Vegyük rá, hogy
ne használja ezeket az indexeket.
4.2.feladat:
- Adjuk meg egy féléves
időszakra
(illetve egy másik féléves időszakra)
vonatkozóan az
eladások (SH.SALES)
összmennyiségét, úgy,
hogy az
Oracle ne
használjon indexet és
a) pontosan
2 partíciót olvasson a
táblából, illetve
b) pontosan
3 partíciót olvasson a
táblából.
Lásd partition_start
és partition_stop
oszlopokat a PLAN_TABLE-ben!
- Lásd még a tervek4.txt
és a hint_peldak.txt
példáit!
C5.
SQL
utasítás rekonstruálása a
végrehajtási terv alapján
Adjunk meg egy olyan
lekérdezést az SH
tábláira (hintekkel együtt ha
szükséges),
aminek az alábbi lesz a
végrehajtási terve:
5.1. (a)-(c) feladat
TERV (OPERATION + OPTIONS + OBJECT_NAME)
----------------------------------------
SELECT STATEMENT + +
HASH JOIN + +
TABLE ACCESS + FULL + COUNTRIES
TABLE ACCESS + FULL + CUSTOMERS
SELECT STATEMENT + +
NESTED LOOPS + +
TABLE ACCESS + FULL + COUNTRIES
TABLE ACCESS + FULL + CUSTOMERS
SELECT STATEMENT + +
MERGE JOIN + +
TABLE ACCESS + BY INDEX ROWID + COUNTRIES
INDEX + FULL SCAN + COUNTRIES_PK
SORT + JOIN +
TABLE ACCESS + FULL + CUSTOMERS
5.2. (a)-(b) feladat:
TERV (OPERATION + OPTIONS + OBJECT_NAME)
----------------------------------------
SELECT STATEMENT + +
HASH + GROUP BY +
HASH JOIN + +
TABLE ACCESS + FULL + COUNTRIES
TABLE ACCESS + FULL + CUSTOMERS
SELECT STATEMENT + +
HASH + GROUP BY +
HASH JOIN + +
TABLE ACCESS + FULL + COUNTRIES
TABLE ACCESS + BY INDEX ROWID + CUSTOMERS
BITMAP CONVERSION + TO ROWIDS +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
5.3.feladat:
TERV (OPERATION + OPTIONS + OBJECT_NAME)
--------------------------------------------------------------
SELECT STATEMENT + +
SORT + ORDER BY +
TABLE
ACCESS + BY INDEX ROWID + CUSTOMERS
BITMAP CONVERSION + TO ROWIDS +
BITMAP AND + +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_MARITAL_BIX
BITMAP OR + +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
BITMAP INDEX + SINGLE VALUE
+ CUSTOMERS_YOB_BIX
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
5.4.feladat:
TERV
(OPERATION + OPTIONS + OBJECT_NAME)
-------------------------------------------------------------
SELECT
STATEMENT + +
HASH + GROUP BY +
HASH JOIN + +
INLIST ITERATOR + +
TABLE ACCESS + BY
INDEX ROWID + CUSTOMERS
BITMAP
CONVERSION + TO ROWIDS +
BITMAP INDEX + SINGLE VALUE + CUSTOMERS_YOB_BIX
PARTITION RANGE + ALL +
TABLE ACCESS + FULL
+ SALES
5.5.feladat:
TERV
(OPERATION + OPTIONS + OBJECT_NAME)
------------------------------------------------------------
SELECT
STATEMENT + +
SORT + AGGREGATE +
HASH JOIN + +
TABLE ACCESS + FULL + PRODUCTS
HASH JOIN + +
TABLE ACCESS + BY INDEX ROWID +
CUSTOMERS
BITMAP CONVERSION + TO ROWIDS
+
BITMAP INDEX +
SINGLE VALUE + CUSTOMERS_YOB_BIX
PARTITION RANGE + ALL +
TABLE ACCESS + FULL + SALES
5.6.feladat:
TERV (OPERATION + OPTIONS + OBJECT_NAME)
-------------------------------------------------------------
SELECT
STATEMENT + +
SORT + ORDER BY +
HASH + GROUP BY +
HASH JOIN + ANTI +
PARTITION RANGE + SINGLE +
TABLE ACCESS + BY LOCAL INDEX ROWID + SALES
BITMAP CONVERSION + TO ROWIDS +
BITMAP INDEX + SINGLE VALUE + SALES_TIME_BIX
TABLE
ACCESS + FULL + CHANNELS
- Lásd még a tervek4.txt
és a hint_peldak.txt
példáit!
P4.
Rendszerhibák kezelése, UNDO
naplózás és
helyreállítás
Segédanyagok:
lásd az
előadás anyagát, naplo.ppt
(1-72 o.)
Tankönyv: Molina-Ullman-Widom: Adatbázisrendszerek
megvalósítása, Panem, 2001.
8.1.-8.2. A rendszerhibák kezelése,
semmisségi
(undo) naplózás
Feladatok: (Papíron
oldjuk meg!)
Molina-Ullman
8. fejezete: A
rendszerhibák kezelése
8.1.1.
Feladat
- A tranzakciók korrekt
végrehajtása, lásd naplo.ppt
(3-11.oldal)
Tegyük fel, hogy az adatbázisra
vonatkozó konzisztenciamegszorítás: 0
<= A <= B.
Állapítsuk meg, hogy a következő
tranzakciók megőrzik-e az adatbázis
konzisztenciáját.
T1: A := A + B; B := A + B;
T2: B := A + B; A := A + B;
T3: A := B + 1; B := A + 1;
8.1.2. Feladat
- A tranzakciók alaptevékenységei,
hasonló
példa: naplo.ppt
(43.oldal)
(Adjuk meg néhány, konkrét művelettel
megadott tranzakció esetén az
adatbáziselemek
memóriabeli és lemezen levő
értékét az
egyes műveletek után.)
A 8.1.1 feladat mindegyik tranzakciójához a
számításokon kívül
tegyük hozzá a
beolvasó-kiíró
tevékenységeket is, és mutassuk be a
tranzakciók lépésenkénti
hatását
a memóriában
és a lemezen tárolt adatokra. Tegyük
fel, hogy kezdetben A = 5
és B = 10.
Molina-Ullman
8.2. fejezete:
Undo naplózás és
helyreállítás
8.2.1.
Feladat
- UNDO naplóbejegyzések, hasonló
példa: naplo.ppt
(50-52.oldal)
Adjuk meg a 8.1.1 feladatban szereplő tranzakciók UNDO
naplóbejegyzéseit.
Tegyük fel, hogy kezdetben A = 5 és B = 10.
8.2.4.
Feladat
- Helyreállítás UNDO
naplóból, hasonló
példa:naplo.ppt
(58-62.oldal)
A következő naplóbejegyzés-sorozat a T
és U két tranzakcióra vonatkozik:
<START T>
<T, A, 10>
<START U>
<U, B, 20>
<T, C, 30>
<U, D, 40>
<COMMIT U>
<T, E, 50>
<COMMIT T>
Adjuk meg a helyreállítás-kezelő
tevékenységeit, ha az utolsó lemezre
került naplóbejegyzés:
a) <START U>
b) <COMMIT U>
c) <T, E, 50>
d) <COMMIT T>
8.2.7. Feladat
- UNDO naplózás
ellenőrzőponttal, hasonló
példa: naplo.ppt
(63-72.oldal)
Tegyük fel, hogy a napló a következő
bejegyzéssorozatot tartalmazza:
<START S>
<S,A,60>
<COMMIT S>
<START T>
<T,A,10>
<START U>
<U,B,20>
<T,C,30>
<START V>
<U,D,40>
<V,F,70>
<COMMIT U>
<T,E,50>
<COMMIT T>
<V,B,80>
<COMMIT V>.
Tegyük fel továbbá, hogy a
működés
közbeni ellenőrzőpont-képzést
kezdjük
alkalmazni,
közvetlenül az alábbi
naplóbejegyzések
(memóriában való)
megjelenésétől
kezdve:
a) <S,A,60>.
b) <T,A,10>.
c) <U,B,20>.
d) <U,D,40>.
e) <T,E,50>.
Mindegyik fenti esetre adjuk meg, hogy:
i) Mikor íródik fel az <END
CKPT>
naplóbejegyzés, és
ii) Bármelyik lehetséges pillanatban, ha hiba
lép
fel, meddig kell a naplóban
visszafelé tekinteni
ahhoz, hogy minden befejezetlen
tranzakciókra
vonatkozó bejegyzést megtaláljunk.