Präsenzübungsblatt Nr. 14 - Lehrstuhl 6, Fakultät für Informatik

Werbung
Universität Dortmund
Lehrstuhl Informatik VI
Prof. Dr. Joachim Biskup
Grundvorlesung Informationssysteme (SS 2007)
Prof. Dr. Joachim Biskup
Leitung der Übungen: Ulrich Flegel, Manuela Ritterskamp, Ralf Menzel, Lena Wiese
Präsenzübungsblatt Nr. 14
Präsenzaufgabe 1 (Zeitmarken-Scheduler)
Gegeben sei die Menge von Transaktionen T = {t1 , t2 , t3 } und die Menge von Objekten O =
{A, B, C}. Betrachtet dazu den folgenden Plan:
P = (1.1:
1.2:
3.1:
3.2:
2.1:
1.3:
2.2:
1.4:
3.3:
2.3:
Read A,
Write C,
Read B,
Write B,
Write B,
Read B,
Read A,
Write A,
Read C,
Write C)
Nehmt an, der oben angegebene Plan P würde von einem Zeitmarkenscheduler bearbeitet. Gebt
den Wertverlauf der dynamischen Zeitmarken für P an.
Präsenzaufgabe 2 (Transaktionsverwaltung in Oracle)
• COMMIT [WORK] /* oder ein DDL-Befehl */
Schließt eine Transaktion ab.
• SAVEPOINT savepoint
Setzt einen Savepoint mit dem Namen savepoint auf.
• ROLLBACK [WORK] [TO [SAVEPOINT] savepoint]
Macht die Änderungen seit Beginn der aktuellen Transaktion oder seit dem
angegebenen Savepoint rückgängig.
• ALTER SESSION SET ISOLATION_LEVEL = (SERIALIZABLE | READ COMMITTED)
Setzt den Isolierungsgrad einer Sitzung.
• SET TRANSACTION ISOLATION LEVEL (SERIALIZABLE | READ COMMITTED)
Setzt den Isolierungsgrad der aktuellen Transaktion.
Oracle unterscheidet dabei die folgenden zwei Isolierungsgrade:
Grundvorlesung Informationssysteme
Präsenzübungsblatt Nr. 14
SERIALIZABLE: Dieser Isolierungsgrad ist nötig damit Oracle dafür sorgt, dass die Transaktionen, wie in der Vorlesung vorgestellt, serialisierbar sind.
READ COMMITTED: Dies ist ein schwächerer Isolierungsgrad, der nicht unbedingt sicherstellt,
dass die Transaktionen serialisierbar sind. Es kann hierbei dazu kommen, dass eine wiederholte Leseanforderung innerhalb einer Transaktion andere Daten liefert als zuvor, falls
das Objekt, dessen Wert gelesen wird, mittlerweile durch andere Transaktionen geändert
wurde, die seit der ersten Leseanforderung endeten.
In einer Oracle-Datenbank wurde eine Tabelle mittels:
CREATE TABLE X (N VARCHAR2(1) PRIMARY KEY, V NUMBER(1))
angelegt. Sie enthält zu Beginn eine Zeile mit den Werten ’A’ und 1. Betrachtet zwei Transaktionen, die beide auf diese Tabelle zugreifen. Für jede dieser Transaktionen wird jeweils eine
SQL*Plus-Sitzung gestartet. Die linke und rechte Spalte der auf der nächsten Seite abgebildeten
Tabelle geben jeweils die in den entsprechenden Sitzungen ausgeführten Anweisungen an.
Interpretiert die Oracle-Sitzungen mit Hilfe des Read/Write-Modells als Plan.
Weitere Einzelheiten zu den oben vorgestellten Befehlen finden sich in der Oracle9i SQL Reference. Allgemeine Informationen zur Transaktionsverwaltung in Oracle finden sich in Oracle9i
Database Concepts, Kapitel 16 und Oracle9i Application Developer’s Guide – Fundamentals,
Kapitel 7.
2
Grundvorlesung Informationssysteme
1
2
3
Präsenzübungsblatt Nr. 14
SQL> SET TIME ON
SQL> SET TIME ON
15:18:12 SQL> SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE;
Session altered.
4
15:18:30 SQL> SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE;
Session altered.
5
15:19:08 SQL> UPDATE X SET V = 2 WHERE N =
’A’;
1 row updated.
6
15:19:28 SQL> COMMIT;
Commit complete.
7
15:20:39 SQL> SELECT V FROM X WHERE N =
’A’;
V
---------1
8
15:21:15 SQL> COMMIT;
Commit complete.
9
15:21:20 SQL> SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE;
Session altered.
10
15:21:37 SQL> SELECT V FROM X WHERE N =
’A’;
V
---------2
11
15:22:24 SQL> COMMIT;
Commit complete.
Präsenzaufgabe 3 (Klausurvorbereitung)
Am Schluss der Übungsstunde habt ihr die Gelegenheit, noch offene Fragen zum Stoff der
Vorlesung und der Übung zu stellen.
Die Tutoren wünschen viel Erfolg bei der Klausur.
3
Herunterladen