Nennen Sie 4 Transaktionsanomalien. Welche werden in Datenbanksystemen bei Standardeinstellungen i.d.R. zugelassen und durch welche Anweisung können sie jedoch verhindert werden?
Dirty Read: Eine Transaktion liest Daten, die von einer anderen unbestätigten Transaktion geschrieben wurden.
Unrepeatable Read: Eine Transaktion liest dieselben Daten zweimal, aber zwischen den Lesevorgängen hat eine andere Transaktion die Daten geändert.
Phantom Read: Eine Transaktion führt eine Abfrage aus, die eine Menge von Zeilen zurückgibt, aber zwischen den Abfragen fügt eine andere Transaktion neue Zeilen ein, die den Ergebnissen der ersten Abfrage entsprechen.
Lost Update: Zwei oder mehr Transaktionen aktualisieren denselben Datensatz gleichzeitig, wodurch die Änderungen einer Transaktion von einer anderen überschrieben werden.
Es muss im Einzelfall entschieden werden, welche Anomalien aktzeptiert werden. Ein Lost Update ist in keinem Fall aktzeptabel.
Welches Ergebnis erzielt die Abfrage SELECT * FROM TEST; nach Ablauf des folgenden SQL-Skripts?
CREATE TABLE TEST (ZAHL NUMBER);
INSERT INTO TEST VALUES (50);
CREATE TABLE HILFE(NAME VARCHAR2(10));
DELETE FROM TEST;
ROLLBACK;
Nachdem das SQL-Skript ausgeführt wurde, wird die Tabelle "TEST" erstellt und eine Zeile mit dem Wert "50" in die Spalte "ZAHL" eingefügt. Dann wird die Tabelle "HILFE" erstellt, die eine Spalte "NAME" mit dem Datentyp "VARCHAR2(10)" hat.
Anschließend wird der Befehl "DELETE FROM TEST;" ausgeführt, der alle Zeilen aus der Tabelle "TEST" löscht. Da es nur eine Zeile in der Tabelle gab und diese Zeile gelöscht wurde, wird die Tabelle "TEST" nach diesem Befehl leer sein.
Danach wird der Befehl "ROLLBACK;" ausgeführt. Dieser Befehl wird alle Änderungen seit dem letzten COMMIT rückgängig machen. Da es jedoch kein COMMIT im Skript gibt, werden alle durchgeführten Aktionen rückgängig gemacht, einschließlich der Erstellung der Tabelle "TEST" und der Einfügung der Zeile mit dem Wert "50".
Insgesamt wird die Abfrage "SELECT * FROM TEST;" nach Ablauf des Skripts keine Daten zurückgeben, da die Tabelle "TEST" durch das ROLLBACK geleert wurde und alle Daten gelöscht wurden.
Erläutern Sie die Eigenschaft “Lesekonsistenz ohne Sperren”.
Die Eigenschaft "Lesekonsistenz ohne Sperren" ermöglicht es, dass Leseoperationen auf einer Datenbank gleichzeitig ausgeführt werden können, ohne dass Sperren gesetzt werden müssen. Dadurch wird gewährleistet, dass die Lesevorgänge immer eine konsistente Sicht auf die Daten erhalten, auch wenn gleichzeitig Schreiboperationen stattfinden.
Wie kann eine SELECT-Anweisung eine Transaktion beginnen und zählt somit in gewisser Weise zu den DML-Anweisungen? Geben Sie eine beliebige SELECTAnweisung als Beispiel an.
Eine SELECT-Anweisung kann eine Transaktion beginnen, wenn sie zusammen mit anderen DML-Anweisungen in einer Transaktionssteuerungsumgebung wie "BEGIN TRANSACTION" verwendet wird, um eine konsistente Sicht auf die Daten während der Transaktion zu gewährleisten.
Beispiel:
BEGIN TRANSACTION;
SELECT * FROM employees WHERE department = 'HR';
UPDATE employees SET salary = salary * 1.1 WHERE department = 'HR';
COMMIT;
Nennen Sie drei SQL-Anweisungen zur Steuerung von Transaktionen.
BEGIN TRANSACTION oder START TRANSACTION: Startet eine neue Transaktion.
COMMIT: Bestätigt die Änderungen einer Transaktion und überträgt sie dauerhaft in die Datenbank.
ROLLBACK: Macht alle Änderungen einer Transaktion rückgängig und setzt die Datenbank auf den Zustand vor dem Beginn der Transaktion zurück.
Welche SQL92-Isolationsebenen werden von Oracle unterst¨utzt und was ist die Standardeinstellung in einem Oracle DBS?
Oracle unterstützt die SQL92-Isolationsebenen READ COMMITTED, SERIALIZABLE und READ ONLY. Die Standardeinstellung in einem Oracle DBS ist READ COMMITTED, was bedeutet, dass eine Transaktion Änderungen sehen kann, die von anderen Transaktionen bestätigt wurden, aber nicht die unbestätigten Änderungen.
Erläutern Sie detailliert den Begriff ”Aquivalenter serieller Schedule”.
Ein "Äquivalenter serieller Schedule" ist ein Begriff aus der Datenbanktransaktions-Theorie, der sich auf die Ausführungsreihenfolge von Transaktionen in einem Transaktionssystem bezieht. Ein solcher Schedule stellt sicher, dass das Endergebnis der parallelen Ausführung von Transaktionen identisch ist mit dem Ergebnis einer seriellen Ausführung derselben Transaktionen. Ein Schedule wird als "äquivalent seriell" bezeichnet, wenn er die Serialisierbarkeit gewährleistet, d.h., die Reihenfolge der Transaktionen entspricht einer möglichen seriellen Ausführung, und das Endergebnis mit dem einer seriellen Ausführung übereinstimmt. Datenbankverwaltungssysteme verwenden Transaktionsisolationsstufen und Sperren, um sicherzustellen, dass äquivalent serielle Schedules erreicht werden und dass Transaktionen konsistent und gleichzeitig ausgeführt werden können, ohne dass es zu Anomalien kommt.
Zuletzt geändertvor einem Jahr