Cache Fusion
# Cache Fusion

Unter Cache Fusion versteht man die Synchronisation zweier Knoten in einem Oracle-Datenbank-Cluster unter Umgehung der Festplatte. Im Real Application Cluster (Oracle RAC) werden dabei physisch getrennte Datenbankpuffer wie ein gemeinsam genutzter Datenbankpuffer benutzt. Dadurch werden die Problematiken der Cache-Kohärenzkontrolle und der Synchronisation der zugrunde liegenden Shared-Disks-Architektur des Datenbanksystems gelöst. Weil ein Datenbankblock auf Basis der logischen Shared-Everything-Architektur nicht von vielen Instanzen gleichzeitig geändert werden kann, entfällt der zusätzliche Aufwand zur Pufferinvalidierung (Cache-Kohärenzkontrolle, siehe z. B. Modified-Shared-Invalid Protokoll). Die Cache Fusion wird hauptsächlich mittels zweier Dienste (Global Cache Service und Global Enqueue Service) realisiert. Weitere wichtige Konzepte der Cache-Fusion-Technologie sind Past-Image und der globale Ressourcenkatalog.

## Global Cache Service

Bei dem Global Cache Service (GCS) handelt es sich um einen globalen Dienst, welcher die Informationen zu benutzten Datenbankblöcken aller DBMS-Instanzen des Clusters verwaltet und für den Transfer von Datenbankblöcken zwischen den DBMS-Instanzen zuständig ist. Alle Informationen zu genutzten Datenbankblöcken trägt dieser Dienst in dem globalen Ressourcenkatalog ein. In der RAC-Umgebung müssen diverse Bereiche der Datenbank durch globale Sperren (Enqueues) geschützt werden. Hierzu gehören beispielsweise Datenbankkataloge, also Bereiche des Hauptspeichers, die für die interne Verwaltung des Datenbankmanagementsystems (DBMS) gedacht sind (z. B. Library-Cache).

## Global Enqueue Service

Die Verwaltung von globalen Ressourcen im Sinne des sperrenden/exklusiven Zugriffs und die nachfolgende Freigabe sowie die Erkennung und entsprechende Auflösung von globalen Verklemmungen übernimmt der Global Enqueue Service (GES). Die GCS- und GES-Dienste werden selbst als verteilte Dienste realisiert. Jede lokale DBMS-Instanz besitzt vier zusätzliche Prozesse, die bei der Synchronisation der gleichzeitigen Zugriffe und Cache Fusion eingesetzt werden.

