Sie haben vor Kurzem auf 11.2.0.2 umgestellt und auch schon einen Schreibzugriffsfehler in einer Datendatei gehabt? Dann haben Sie sich vielleicht gewundert, warum die gesamte Instanz abgestürzt ist. Bislang wurde die betroffene Datei lediglich offline gesetzt, sofern es sich dabei nicht um eine SYSTEM- oder UNDO-Datendatei handelte.
Diese Änderung hängt mit einem versteckten (nicht dokumentierten) Parameter zusammen, namens "_datafile_write_errors_crash_instance". Dieser Parameter wurde in der Version 11.2.0.1 eingeführt, erhielt zunächst aber den Default-Wert FALSE. Damit hatte er keinerlei Auswirkung auf das bisherige Verhalten bei (Schreib-)Fehlern in den Datendateien: Wurde solch ein Fehler von Oracle entdeckt (z.B. im Rahmen eines Checkpoints), dann wurde die Datei (bei eingeschalteter Archivierung) automatisch offline gesetzt. Der Versuch, Daten aus dieser Datei aufzurufen wird mit folgender Fehlermeldung quittiert:
In der Alert-Datei findet man dazu folgenden Eintrag:
Ab Version 11.2.0.2 steht der Parameter nun standardmäßig auf TRUE und bewirkt einen Instanzabsturz im Falle eines Schreibfehlers für eine - aus Oracle Sicht - weniger wichtige Datendatei. In der Alert-Datei findet sich nun folgender Eintrag:
Da es sich bei diesem Parameter um einen versteckten Parameter handelt, müssen Sie leider etwas umständlich vorgehen, um an die aktuelle Einstellung zu kommen:
Die Spalte KSPPSTVL gibt dabei den aktuellen Wert des Parameters aus und die Spalte KSPPTDF enthält, ob der Parameter explizit gesetzt worden ist (FALSE) oder noch seinen Default-Wert (TRUE) besitzt.
Falls Sie den Parameter wieder auf FALSE setzen möchten, gehen Sie folgendermaßen vor:
Natürlich können Sie bereits in Version 11.2.0.1 den Parameter auf TRUE setzen, falls Sie hier ebenfalls das geänderte (Absturz-)Verhalten "erleben" möchten.
Bleibt am Schluss die Frage, "Warum dieses neue Verhalten?". Aus dem Blickwinkel "Hochverfügbarkeit" heraus betrachtet, stuft man dieses neue Feature zunächst als äußerst fragwürdig ein: wo ist meine Verfügbarkeit geblieben, wenn bei jedem Schreibfehler in eine Datendatei sofort ein Instanzabsturz erfolgt. Ist es nicht besser, wenn nur die betroffene Datei aus dem Betrieb heraus genommen wird, also offline gesetzt wird, aber das System weiter verfügbar ist? Eigentlich ja, allerdings hat es teilweise länger gedauert, bis der Fehler schließlich bemerkt wurde und es hat immer das Eingreifen des DBAs erfordert, da ein Media Recovery notwendig war.
Heutzutage ist ein Großteil der I/O Fehler nur vorübergehender Natur und lässt sich durch einen Neustart des Systems oder durch die modernen Plattensysteme (SAN, RAID etc.) beheben. Befindet sich die betroffene Instanz zudem in einer RAC- oder Data Guard Umgebung, dann kann durch einen Absturz das automatische Umschalten erreicht werden und somit eine wesentlich höhere Verfügbarkeit realisiert werden. Ein menschliches Eingreifen ist dabei in aller Regel auch nicht mehr erforderlich.
Oracle sagt also, dass ein Offline-Setzen einer Datendatei durch einen I/O Fehler beim heutigen Stand der Technik und der oraclespezifischen Möglichkeiten nicht mehr zeitgemäß wäre.
Entscheiden muss letztendlich jeder DBA selbst, welchem Verhalten er mehr abgewinnen kann. Wichtig ist nur, dass er über die Neuerungen Bescheid weiß.
Weitere Tipps und Informationen erhalten Sie in unseren DBA Kursen.