Übungsblatt Nr. 9

Transcription

Übungsblatt Nr. 9
Universität Dortmund
Fachbereich Informatik, Lehrstuhl 6
Prof. Dr. Norbert Fuhr
Informationssysteme (WS 2001/2002)
Prof. Dr. Norbert Fuhr
Leitung der Übungen: Christian Altenschmidt und Ralf Menzel
Übungsblatt Nr. 9
Abgabetermin: 8. Januar 2002, 1200 Uhr, Briefkasten 36
Aufgabe 1 (Transaktionen, Serialisierbarkeit, Polygraph)
Gegeben sei die Menge von Transaktionen T = {t1 , t2 , t3 , t4 } und die Menge von Objekten O = {A, B, C}. Betrachtet dazu den folgenden Read/Write-Plan:
P = (1.1: Read A, 1.2: Write C, 4.1: Read C, 3.1: Read B, 3.2: Write B,
2.1: Write B, 1.3: Read B, 2.2: Read A, 4.2: Read A, 1.4: Write A)
1. Erweitert den Plan P zu e_P .
2. Erstellt den zu P gehörenden Serialisierbarkeitsgraphen mittels der Kanten Kliest ,
Kvor und W . Ist der Plan P serialisierbar?
Punkte 1 + 4 = 5
Aufgabe 2 (Oracle, Verklemmungen)
Erzeugt auf dem Oracle-System mittels zweier Transaktionen Verklemmungen (deadlocks, Oracle-Fehler ORA-00060). Geht dabei wie folgt vor:
1. Legt Tabellen an, die ihr mit geeigneten Daten füllt.
2. Startet (z. B. in zwei Terminals) zwei Datenbanksitzungen.
3. Aktiviert in SQL*Plus für beide Sitzungen mittels SET TIME ON die Ausgabe der
aktuellen Zeit.
4. Erzeugt eine Verklemmung, indem Ihr ausschließlich UPDATE-Befehle verwendet.
5. Beendet die Transaktionen mit ROLLBACK.
6. Erzeugt eine Verklemmung, indem Ihr ausschließlich LOCK-Befehle verwendet.
Formatiert Eure Abgaben so, dass man erkennen kann, in welcher Reihenfolge die verschiedenen Befehle ausgeführt wurden.
Punkte 1 + 0 + 0 + 3 + 0 + 2 = 6
Aufgabe 3 (Scheduler, Oracle)
In einer Oracle-Datenbank wurde eine Tabelle mittels:
CREATE TABLE X (N CHAR(1) PRIMARY KEY, V NUMBER(1));
1
Informationssysteme
Übungsblatt Nr. 9
angelegt. Sie enthält zu Beginn eine Zeile mit den Werten ’A’ und 1. Betrachtet zwei
Transaktionen, die beide auf diese Tabelle zugreifen.
SQL> SET TIME ON
SQL> SET TIME ON
15:18:12 SQL> ALTER SESSION
15:18:15
2 SET ISOLATION_LEVEL = SERIALIZABLE;
Session altered.
15:18:30 SQL> ALTER SESSION
15:18:34
2 SET ISOLATION_LEVEL = SERIALIZABLE;
Session altered.
15:19:08 SQL> UPDATE X SET V = 2
15:19:21
2 WHERE N = ’A’;
1 row updated.
15:19:39 SQL> SELECT V FROM X
15:19:55
2 WHERE N = ’A’;
V
–––––
1
Untersucht die Scheduler aus der Vorlesung anhand der gegebenen Transaktionen.
Was würde passieren, wenn man die Transaktionen dem in der Vorlesung vorgestellten
1. Sperrprotokoll-Scheduler bzw.
2. Zeitmarken-Scheduler,
übergeben würde? Gebt dabei insbesondere jeweils die entsprechenden Pläne an.
Punkte 2 × 4 = 8
Aufgabe 4 (Zeitmarken-Scheduler)
In der Vorlesung wurde eine Verfeinerung des Zeitmarken-Schedulers vorgestellt. Die
Schreibanforderungen für den Zeitmarken-Scheduler werden dabei wie folgt modifiziert:
falls oread > si , dann wird die Transaktion ti abgebrochen.
falls oread ≤ si und owrite > si , dann wird diese Anweisung von ti ignoriert, aber mit ti
fortgefahren.
Anderenfalls wird die Schreibanweisung ausgeführt und owrite := si gesetzt.
Gebt einen Plan an, der vom verfeinerten Scheduler unverändert durchgelassen wird,
bei dem der nicht verfeinerte Scheduler aber eine Transaktion abbricht.
Hinweis: Betrachtet Schreibanweisungen auf ein Objekt, denen in derselben Transaktion kein Lesen des betreffenden Objektes vorausgegangen ist. Solche Schreibanweisungen werden auch „blind writes“ genannt. Werden mehrere „blind writes“ hintereinander
ausgeführt, so ist dies äquivalent zu der alleinigen Ausführung des letzten „blind write“.
Punkte 4
2