
Das IT-Magazin der ORDIX AG mit Fachbeiträgen zu Datenbanken, Unix und Java/XML.
Ein Problem ist, dass der Ausfall einer Instance dazu führt, dass die überlebende Instance eine Reconfiguration durchführen muss, um die Ressourcen der ausgefallenen Instance sauber zu übernehmen bzw. zu beenden. Das kann bei 8i recht lange dauern und mit lange" ist hier unter Umständen ein ca. 20-minütiger Hänger" der überlebenden Instance gemeint. Für eine Hochverfügbarkeitskonfiguration schon eine sehr unpässliche" Zeit.
Durch die neue Architektur und auch einige neue Mechanismen bei RAC wird diese Zeit stark verkürzt, was unter dem Aspekt der Hochverfügbarkeit besonders interessant ist.
Für OPS werden explizit Ressourcen und Locks konfiguriert, um offene Transaktionen entsprechend zu verwalten. Eine Reconfiguration dieser Ressourcen findet statt, wenn eine Instance
Wie erwähnt, führt der Ausfall einer Instance dazu, dass alle open global locks/ressources" der ausgefallenen Instance gelöscht werden und auf die überlebenden Instances verteilt werden (ein sogenanntes lock remastering").
In dieser Zeit können auf den überlebenden Instances keine Transaktionen durchgeführt werden, da die Datenbank im eingefrorenen" Zustand ist (freeze_db_for_fast_instance_recovery = true).
Die entsprechende Zeit für eine solche Reconfiguration hängt von der Größe der Instance ab, d. h. wie viele SW- und HW-Ressourcen genutzt wurden, wie viel SGA konfiguriert wurde, etc. Somit dauert die Reconfiguration-Zeit bei einer DB mit einer SGA von ca. 1GB, lm_ress = 245638, lm_locks = 258235 schon mal 20 Minuten, so dass die überlebende Instance für die Applikation in der Zeit hängt.
Die lm_"-Parameter wurden hier schon auf die Optimierung der Recoveryzeit angepasst (im Sinne von heruntergesetzt"). Nebenbei sei bemerkt, dass die Nutzung von fixed locks" die Zeiten noch mehr verlängert.
Zum einen gibt es ein 2 Phasen Recovery für das Instance Recovery, das die Redologs entsprechend durcharbeitet. Hierdurch können Distributed Lock Management und Recovery parallelisiert werden.
Betrachtet man zum anderen die RAC-Architektur, so wurde durch die Parallelisierung einiger Prozesse eine entsprechende Grundlage für die Verbesserung geschaffen. Allein der Wegfall der fixen Sperren (fixed locks") beschleunigt den Vorgang der Reconfiguration, da diese nicht mehr explizit allokiert werden müssen.
Des weiteren wurde das Remastering aller locks und Ressourcen auf die überlebenden Instances abgeschafft und stattdessen ein sogenanntes lazy remastering" genutzt. Hier werden nur die Ressourcen der ausgefallenen Instance und die minimal notwendigen Ressourcen der überlebenden Instance während der Reconfiguration aufgeräumt.
Mit diesem Konzept behalten die Instances die meisten Ressourcen während der Reconfiguration, was in den vorhergehenden Versionen von Oracle nicht der Fall war. Bislang wurden alle Ressourcen aller Instances gelöscht.
Aufgrund dieses Konzeptes können viele Prozesse die Arbeit wieder aufnehmen, während die Reconfiguration läuft, da ihre Ressourcen und Sperren nicht gelöscht wurden.
Während der Laufzeit entscheidet RAC für eine Sperre oder Ressource, welcher Knoten sie recovert. Dies wird abhängig von der Zugriffshäufigkeit der Knoten auf die Ressource gemacht.
Durch die mit Version 9 eingeführten Past images" in den Remote Buffer Caches (vgl. Artikel "RAC Features Teil I", ORDIX News 2/2002), wurde auch das Recovery optimiert.
Des weiteren wird das Recovery nicht mehr von einem expliziten Prozess durchgeführt, sondern durch den SMON Prozess einer überlebenden Instance.
Vor allem das 2 Phasen Konzept wirkt sich auch bei einem 2-Knoten RAC auf die Performance des Instance Recoveries aus. Die oben genannten Architekturvorteile (Zuweisung der Ressourcen auf die Knoten, die sie am meisten genutzt haben) wirken sich natürlich eher auf Cluster aus, die mehr als 2 Knoten besitzen.
Christoph Lafeld (info@ordix.de).