Verlagern von OCR/Voting Disk und SPFile innerhalb ASM
von Sebastian Solbach, ORACLE Deutschland B.V. & Co. KG

Das Oracle Automatic Storage Management (ASM) ist seit Oracle 10g der bevorzugte Storage Manager für Oracle Datenbanken, da er das Management des Storage für Datenbank Files erheblich vereinfacht. Aber seit Oracle 11g Release 2 ist ASM nicht nur für Datenbanken zu verwenden: Im neuen Release ist ASM ein vollwertiger clusterfähiger Volume Manager. Damit kommen nun alle Files in den Genuss der ASM Vorteile: Hierzu gehören neben dem automatische Striping der Daten über alle verwendeten Platten auch Spiegelungstechnologien zur Datensicherheit. Dies ermöglicht unter anderem auch das sogenannte Host Based Mirroring, bei dem die Daten über mehrere Storage Systeme gespiegelt werden.

Allerdings muss gerade der Grad der Spiegelung (keine Redundanz, einfache Spiegelung oder doppelte Spiegelung) beim Einrichten der Diskgruppen (Zusammenfassen mehrerer Platten oder LUNs zu einer großen Einheit) festgelegt werden. Diese Information und einige andere Parameter der Diskgruppe sind leider nach dem initialen Einrichten der Diskgruppe nicht mehr zu ändern. Dies ist insbesondere ärgerlich, da bei der Installation der 11g Release 2 Grid Infrastruktur nur wenige Vorgaben für die Default Diskgruppe gemacht werden können. Und dies ist nachträglich auch nicht mehr leicht zu ändern: Denn dann liegen bereits die Konfigurationsfiles der Clusterware in ASM. Hierzu gehören die Oracle Cluster Registry (OCR), die Voting Disks und das ASM Server Parameter File (SPFile). Hat man sogar schon eine Datenbank installiert, müssen auch die Tablespaces, Redologfiles und das Datenbank SPFile auf die neue Diskgruppe verschoben werden.

Dieser Tipp beschreibt das Verschieben von OCR, Voting Disk und dem ASM SPFile in eine neue Diskgruppe.

Anmerkung: Bilder zum Tipp werden sichtbar, indem man mit der Maus über das Brillen Icon fährt.


Um das Bild wieder zu verkleinern, auf das Bild klicken.

Anlegen einer neuen Diskgruppe mit dem ASMCA

In diesem Beispiel gehe ich davon aus, dass bei der Installation der Oracle Grid Infrastruktur eine Diskgruppe DATA angelegt wurde, bei der keine Spiegelung (EXTERNAL REDUNDANCY) verwendet wurde.


Screenshot des ASMCAs nach der GI Installation mit nur einer DATA Diskgruppe

Die Inhalte dieser Diskgruppe sollen nun in eine Diskgruppe DATA2 mit einfacher Spiegelung (NORMAL REDUNDANCY) verschoben werden.
Hierzu muss zuerst einmal die die neue Diskgruppe angelegt werden. Am einfachsten geschieht dies über den ASMCA:


Anlegen der DATA2 Diskgruppe mit dem ASMCA

Für die Diskgruppe DATA2 wählen wir diesmal "Normal" Redundancy. Wichtig ist, dass die Diskgruppe aus mindestens 3 LUNs/Platten besteht bzw. mindestens 3 Failure Gruppen besitzt. Dies ist notwendig, da die neue Diskgruppe auch die Voting Disks aufnehmen soll. Bei einer Diskgruppe mit normaler Spiegelung erstellt die Clusterware 3 Voting Disks, die auf 3 unterschiedliche Failure Gruppen verteilt werden. Deswegen sollte auch, falls man Namen für die Failure Gruppen vergibt, darauf geachtet werden, mindestens 3 Failure Gruppen zu spezifizieren.

Des Weiteren benötigt die ASM Diskgruppe den ASM Kompatibilitätsparameter auf 11.2.0.0.0, da ansonsten keine OCR und Voting Disks auf der Diskgruppe liegen dürfen. Diese Einstellungen erhält man über den Knopf "Show Advanced Options". Hier sollte auch die Allocation Unit Size auf 4 MB gesetzt werden. Dies ist die Oracle Empfehlung für 64-bit Oracle 11g Produktivsysteme.


ASMCA nach dem Anlegen von DATA2

Verschieben des ASM SPFiles

Neben OCR und Voting Disks befindet sich auch das Server Parameter File der ASM Instanz in der DATA Diskgruppe und unterliegt, genau wie die OCR, damit der Spiegelung der Diskgruppe. Deswegen sollte auch das SPFile verschoben werden. Leider geht dies im Cluster Stack nicht online, da die einzelnen Clusterknoten erst nach einem Reboot auf das neue SPFile zugreifen. Das Durchstarten des Clusterstacks könnte zwar rollierend passieren, im Beispiel starte ich aber den komplette Clusterstack einfach durch.

Das Verschieben des SPFiles passiert hierbei über die Kommandozeile von ASM (ASMCMD), da diese auch die Clusterware Informationen mit aktualisiert. So ist der Ort des SPFiles extern im sogenannten GPnP (Grid Plug & Play) Profil hinterlegt. Dies ist eine xml Datei, die nicht manuell geändert werden kann:

$ asmcmd 
ASMCMD> spget
+DATA/sclclus/asmparameterfile/registry.253.725570829

ASMCMD> spcopy -u +DATA/sclclus/asmparameterfile/registry.253.725570829 +DATA2/spfileASM.ora
ASMCMD> spget
+DATA2/spfileASM.ora
ASMCMD> exit

$ su
# crsctl stop cluster -all
# crsctl start cluster -all
Der Befehl spget ermittelt hierbei die Information zu dem bisher verwendeten SPFile. Diese Information ist notwendig, um dies beim nachfolgenden spcopy mitzugeben. Der Parameter -u beim Befehl spcopy sorgt dafür, dass auch das GPnP Profil aktualisiert wird. Ließe man diesen weg, würde zwar das SPFile kopiert, der Clusterstack würde aber immer noch versuchen, mit dem alten SPFile zu starten. Sicherheitshalber sollten alle Clusterknoten gestartet sein, damit das GPnP auch clusterweit aktualisiert wird.

Seit 11.2 gibt es die sogenannten clusterweiten Befehle. Deswegen ist es auch möglich, mit nur einem Befehl alle Clusterknoten zu stoppen und neu zu starten und somit die Änderungen des SPFiles zu aktivieren.

Verlagern der Voting Disks

Wie viele Voting Disks es gibt, ist abhängig von der Redundanz der Diskgruppe. Bei "EXTERNAL REDUNDANCY" ist es eine, bei "NORMAL REDUNDANCY" sind es 3 und bei "HIGH REDUNDANCY" 5. Die Clusterware ermittelt selber, wie viele Voting Disks in ASM angelegt werden. Allerdings kann immer nur eine Diskgruppe die Voting Disks enthalten, diese sind niemals über mehrere Diskgruppen verteilt. Deswegen werden die Voting Disks auf der DATA2 DISKGROUP auch nicht hinzugefügt sondern mit einem Statement ersetzt:

# crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   725e021206c64f3dbf8c2f6f638d0716 (/dev/xvdc1) [DATA]
Located 1 voting disk(s).

# crsctl replace votedisk +DATA2
Successful addition of voting disk 664b0170a5c64fe3bfd967d28fdb5d4f.
Successful addition of voting disk 8739d807b2954f36bff9f3f0710403a3.
Successful addition of voting disk 16fa411585454f1fbfff7a1dd6849990.
Successful deletion of voting disk 725e021206c64f3dbf8c2f6f638d0716.
Successfully replaced voting disk group with +DATA2.
CRS-4266: Voting file(s) successfully replaced
Der ganze Vorgang dauert nur wenige Sekunden und geht ohne Downtime der Clusterware vonstatten.

Hinzufügen und Entfernen der Oracle Cluster Registry

Oracle 11g Release 2 erlaubt mehrere Kopien der Oracle Cluster Registry. Zwar unterliegt jede einzelne Kopie der Spiegelung der Diskgruppe und ist damit quasi schon gesichert, allerdings kann man zur sogenannten "logischen" Sicherung durchaus bis zu 5 Kopien der OCR vorhalten. Hierbei muss jede OCR in einer eigenen Diskgruppe liegen: eine Diskgruppe kann immer nur eine OCR aufnehmen.

Aus diesem Grund wird die OCR zuerst in die Diskgruppe DATA2 kopiert und dann aus DATA1 gelöscht. Zur Sicherheit wird die OCR vor der ganzen Aktion geprüft und ein manuelles Backup angestossen:

# ocrcheck
  Status of Oracle Cluster Registry is as follows :
         Version                  :          3
         Total space (kbytes)     :     262120
         Used space (kbytes)      :       2780
         Available space (kbytes) :     259340
         ID                       : 1078665347
         Device/File Name         :      +DATA
                                    Device/File integrity check succeeded
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check succeeded

# ocrconfig -manualbackup
  sccloud025     2010/08/05 18:28:09     /opt/grid/cdata/sclclus/backup_20100805_182809.ocr

# ocrconfig -add +DATA2

# ocrcheck
  Status of Oracle Cluster Registry is as follows :
         Version                  :          3
         Total space (kbytes)     :     262120
         Used space (kbytes)      :       2808
         Available space (kbytes) :     259312
         ID                       : 1078665347
         Device/File Name         :      +DATA
                                    Device/File integrity check succeeded
         Device/File Name         :     +DATA2
                                    Device/File integrity check succeeded
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check succeeded

# ocrconfig -delete +DATA
# ocrcheck
Sind die Aktionen abgeschlossen, kann anschliessend zum Beispiel über den ASMCA die Diskgruppe DATA gelöscht werden.

Anmerkung: Was passiert nun, wenn die Diskgruppe schon Datenbank Files enthält?

Das Verschieben der Datenbank Tablespaces würde dann mit dem RMAN BACKUP AS COPY und dem RMAN SWITCH Befehl passieren. Nicht aktive und bereits archivierte Redologs können einfach während des laufendes Betriebs gelöscht und in der neuen Diskgruppe neu angelegt werden. Das Server Parameter File der Datenbank ließe sich über den Befehl CREATE SPFILE from PFILE oder ebenfalls über das RMAN Backup bewerkstelligen.

Siehe hierzu auch den Tipps zum RMAN Restore

Nützliche Links und Referenzen

  • Oracle Clusterware 11g Release 2 (11.2) - Using standard NFS to support a third voting file for extended cluster configurations (PDF)
  • Oracle Clusterware Administration and Deployment Guide: Appendix E CRSCTL Utility Reference
  • Oracle Clusterware Administration and Deployment Guide: Appendix G Oracle Cluster Registry Configuration Utility Reference
  • Oracle Database Storage Administrator's Guide: ASMCMD Instance Management Commands
  • Zurück zur Community-Seite