Kapitel 29
Real Application Clusters
686
Abb. 29.3: RAC-Architektur mit gespiegelter Datenbank
29.2 Cache Fusion
Eine Real Application Cluster-Datenbank besteht aus mehreren Knoten. Auf
jedem dieser Knoten läuft eine Instanz, die einen Buffer Cache besitzt, der sich
grundlegend nicht von einer normalen Instanz unterscheidet. Auch der Anmelde-
prozess ist gleich geblieben. Meldet sich ein Benutzer an der Datenbank an, weist
ihm der Listener einen Client/Server-Prozess auf einem der Knoten zu. Führt die-
ser Benutzer eine SELECT-Anweisung aus, dann werden die Datenblöcke in den
lokalen Buffer Cache geladen.
Fordert ein Benutzerprozess einen Datenblock an, der sich bereits im Buffer
Cache einer anderen Instanz befindet, kann er diesen nicht einfach von der Disk
lesen. Der Block könnte auf dem anderen Knoten bereits verändert worden sein.
Er erstellt eine Kopie des Blocks in seinem lokalen Buffer Cache und benutzt dafür
den Private Interconnect.
Sie ahnen bereits, dass für die Verwaltung des globalen Buffer Cache ein komple-
xer Mechanismus erforderlich ist. Die Wahrung der Konsistenz der Datenblöcke
über den gesamten Cluster wird als Cache Coherency bezeichnet. So muss das
Locking von Sätzen und Tabellen auf den globalen Cache, also auf den Buffer
29.2
Cache Fusion
687
Cache, in jeder Instanz angewandt werden. Bei einem globalen Checkpoint müs-
sen alle als »Dirty« gekennzeichneten Buffer in allen Instanzen berücksichtigt
werden. Das alles realisiert Cache Fusion.
Die Basis von Cache Fusion ist das Multi Version Consistency-Modell. Das Modell
unterscheidet zwischen einem Current Block und mehreren Consistent Read-Versio-
nen. Der Current Block enthält alle Änderungen, egal ob sie mit COMMIT abge-
schlossen wurden oder nicht. Ein Consistent Read Block ist ein Snapshot des
Datenblocks zu einem früheren Zeitpunkt. Ein Datenblock kann sich also im Buf-
fer Cache auf mehreren Instanzen in unterschiedlichen Versionen befinden.
Damit wird die Lesekonsistenz, wie sie von einer Datenbank mit einer Instanz
bekannt ist, für das gesamte Cluster garantiert. Lesekonsistenz bedeutet, dass die
Daten als Ergebnis einer SQL-Abfrage in dem Zustand geliefert werden, wie er
zum Zeitpunkt vorgelegen hat, als die SQL-Abfrage abgesetzt wurde. Mit anderen
Worten, Änderungen der Daten, die während der Laufzeit der Abfrage erfolgt sind,
haben keinen Einfluss auf das Ergebnis. Dieses Grundprinzip der Oracle-Daten-
bank wird mithilfe des Multi Version Consistency-Modells auch in einer RAC-
Datenbank garantiert.
Auch das Locking unterscheidet sich in seiner Funktionalität nicht von einer
Datenbank mit einer Instanz. Lesezugriffe sind unabhängig von vorhandenen
Sperren. Umgekehrt warten Schreibzugriffe nicht auf Lesezugriffe.
Die Hauptaufgabe des Global Cache Service ist die Verwaltung und Überwachung
der Datenblöcke. Dazu gehört das Verwalten der Informationen, in welcher Instanz
sich ein Block befindet, welchen Status und welche Version er besitzt. Der GCS ist
weiterhin für die Übertragung der Blöcke zwischen den Instanzen verantwortlich.
Der Global Enqueue Service (GES) verwaltet die Enqueue-Mechanismen im Cluster.
Dazu gehört der Zugriff auf den Library Cache, den Dictionary Cache sowie die
Transaktionen. Folgende Locks werden vom GES verwaltet:
Sperren auf Zeilen und Tabellen
Sperren im Library Cache
Sperren im Dictionary Cache
Global Cache Service und Global Enqueue Service speichern ihre Informationen
im Global Resource Directory (GRD). Das GRD befindet sich im Shared Pool aller
Instanzen und ist als verteilter Speicher fehlertolerant. Die folgenden Informatio-
nen befinden sich im GRD:
Die Data Block Address (DBA)
Der Speicherort der aktuellsten Version eines Datenblocks
Der Status eines Datenblocks
Die Rolle eines Datenblocks (lokal oder global)
Kapitel 29
Real Application Clusters
688
Wie Sie wissen, kann sich ein Datenblock in mehreren Instanzen des Clusters
befinden. Er kann die folgenden Modi annehmen:
Shared Mode (S): Der gemeinsame Zugriff ist erlaubt. Der Block kann jedoch
nicht von einem anderen Prozess verändert werden.
Exclusive Mode (X): Der Block ist gesperrt. Ein lesender Zugriff durch andere
Prozesse ist möglich.
Null Mode (N): Für den Block sind noch keine Zugriffsrechte vergeben worden.
Wenn ein Datenblock zum ersten Mal von der Disk in den Buffer Cache gelesen
und von keiner anderen Instanz gehalten wird, dann wird er als Lokaler Datenblock
bezeichnet. Mit Übertragung zu einer anderen Instanz und anschließender Verän-
derung wird er zum Globalen Datenblock.
Die Basis für die Bewahrung der Konsistenz der Datenblöcke in einer RAC-Archi-
tektur ist das Past Image-Konzept. Betrachten Sie dazu das folgende Beispiel sowie
die Abbildung 29.4.
Abb. 29.4: Das Past Image-Prinzip

Get Oracle 12c - Das umfassende Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.