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