Aufbau eines Oracle RAC mit VirtualBox

In einem kurzen Blogeintrag hatte ich schon darauf hingewiesen, daß VirtualBox jetzt auch Shared Disks beherrscht. Das wiederum ist eine wichtige Voraussetzung, um ein RAC aufzusetzen zu können. Da ich gerade eine RAC-Übungsumgebung benötigte und noch keine Aufbauanleitung für mein spezifisches Setup im Netz finden konnte, habe ich meine Notizen mal etwas formatiert und stelle sie hier zur Verfügung.

Setup:

  • Hostsystem: Ubuntu 10.04 „Lucid Lynx“ (mein Testsystem auf AMD64-Architektur)
  • VirtualBox >= 3.2.8 (wegen Shared Disks, Download hier)
  • Gastsystem: Windows 2003 Server 32-Bit, Service Pack 2
  • Oracle 10gR2 Standard Edition mit Clusterware (Download hier)

Zugegeben, RAC unter Windows ist nicht gerade die tollste Option, aber ich brauchte genau diese Konstellation, und für Linux gibt’s schon was online. ;-)

Aufbau der virtuellen Festplatten:

  • Je eine lokale Platte für die VM: 10 GB, dynamisch wachsend
  • Shared Disk für OCR: 100 MB
  • Shared Disk für Voting: 50 MB
  • Shared Disk für Daten: 1 GB
  • Shared Disk für FRA: 400 MB
VBoxManage createhd --filename rac_ocr.vdi --variant Fixed --type shareable --size 112 --remember --comment "Shared Disk: OCR"
VBoxManage createhd --filename rac_voting.vdi --variant Fixed --type shareable --size 50 --remember --comment "Shared Disk: Voting"
VBoxManage createhd --filename rac_data.vdi --variant Fixed --type shareable --size 800 --remember --comment "Shared Disk: Daten"
VBoxManage createhd --filename rac_fra.vdi --variant Fixed --type shareable --size 400 --remember --comment "Shared Disk: Flash Recovery"

Anlegen der virtuellen Maschine:

Im folgenden sind nur von den Standardeinstellungen abweichende Werte angegeben.

  • Name: Win2k3_RAC1
  • Betriebssystem: Microsoft Windows
  • Version: Windows 2003
  • Hauptspeicher: 1200 MB
  • Grafikspeicher: 32 MB
  • IDE-Controller mit primärer Festplatte „Win2k3_RAC1.vdi“. Als primärer Slave kann noch ein CD-Abbild von Windows 2003 und später die Installations-CD von Oracle eingehängt werden.
  • SCSI-Controller, Typ „Lsilogic“, mit Option „Host I/O-Cache verwenden“ (betrifft ext4-Dateisystem des Hosts, hier besteht ansonsten die Gefahr eines Datenverlusts).
    • An den SCSI-Controller noch keine Shared Disks anhängen, das kommt weiter unten.
  • Netzwerk: Zusätzlich zum Adapter 1 kommt noch Adapter 2, angeschlossen an „Internes Netzwerk“. Adapter 2 wird später für das private Netzwerk zur Inter-Cluster-Kommunikation benutzt.

Gastsystem installieren

  • Rechnername: rac1
  • Arbeitsgruppe: racgroup
  • Netzwerkadresse LAN1 (öffentlich): 192.168.56.21, Subnet Mask 255.255.255.0, Gateway: keiner
  • Netzwerkadresse LAN2 (privat): 10.0.0.21, Subnet Mask 255.255.0.0, Gateway: keiner
  • Zur Sicherheit kann nun noch das Windows-Update durchgeführt werden, um alle Patches nach dem Service Pack 2 zu installieren.
  • Windows-Firewall auf den beiden Netzwerkkarten deaktivieren.
  • Automount aktivieren (Anforderung von Oracle); dazu folgendes auf der Kommandozeile eingeben:
diskpart
automount enable
exit
  • „Control Panel“, „System“, „Advanced“, „Settings“, „Advanced“: Favor Background Processes + Favor Programs over Cache.
  • „Control Panel“, „Administrative Tools“, „Services“: Folgende Dienste auf „Manual“ stellen:
    • Automatic Updates
    • Distributed Transaction Coordinator
    • Help and Support
    • Printer Spooler
  • „Control Panel“, „Network Connections“, Menü „Advanced“, „Advanced Settings“: Überprüfen, daß die öffentliche Netzwerkverbindung in den Bindings an oberster Stelle steht.
  • Gastsystem herunterfahren.
  • Jetzt wäre ein guter Moment, um eine Sicherheitskopie dieser VM anzulegen. ;-)

Gastsystem klonen

VBoxManage clonehd Win2k3_RAC1.vdi Win2k3_RAC2.vdi

Shared Disks zuordnen:

VBoxManage storageattach Win2k3_RAC1 --storagectl "SCSI-Controller" --port 1 --device 0 --type hdd --medium rac_ocr.vdi
VBoxManage storageattach Win2k3_RAC1 --storagectl "SCSI-Controller" --port 2 --device 0 --type hdd --medium rac_voting.vdi
VBoxManage storageattach Win2k3_RAC1 --storagectl "SCSI-Controller" --port 3 --device 0 --type hdd --medium rac_data.vdi
VBoxManage storageattach Win2k3_RAC1 --storagectl "SCSI-Controller" --port 4 --device 0 --type hdd --medium rac_fra.vdi
VBoxManage storageattach Win2k3_RAC2 --storagectl "SCSI-Controller" --port 1 --device 0 --type hdd --medium rac_ocr.vdi
VBoxManage storageattach Win2k3_RAC2 --storagectl "SCSI-Controller" --port 2 --device 0 --type hdd --medium rac_voting.vdi
VBoxManage storageattach Win2k3_RAC2 --storagectl "SCSI-Controller" --port 3 --device 0 --type hdd --medium rac_data.vdi
VBoxManage storageattach Win2k3_RAC2 --storagectl "SCSI-Controller" --port 4 --device 0 --type hdd --medium rac_fra.vdi

Nun das 2. Gastsystem („node2“) hochfahren und folgende Einstellungen ändern:

  • Rechnername: rac2
  • Arbeitsgruppe: racgroup
  • Netzwerkadresse LAN1 (öffentlich): 192.168.56.22, Subnet Mask 255.255.255.0, Gateway: keiner
  • Netzwerkadresse LAN2 (privat): 10.0.0.22, Subnet Mask 255.255.0.0, Gateway: keiner

Node1 hochfahren.
Auf beiden Maschinen die Datei C:\windows\system32\drivers\etc\hosts editieren und folgende Einträge hinzufügen:

192.168.56.21 rac1
192.168.56.22 rac2
192.168.56.31 rac1-vip
192.168.56.32 rac2-vip
10.0.0.21 rac1-priv
10.0.0.22 rac2-priv

ASM-Disks vorbereiten

  • „Manage your Server“, „Computer Management“, „Disks“ öffnen.
  • Ein Wizard startet automatisch und möchte Disks initialisieren. Dies für alle Shared Disks bestätigen, im nächsten Dialog prüfen, daß keine Platten ausgewählt sind und dann den Wizard enden lassen.
  • Danach auf jeder Disk (außer der lokalen C:-Platte) Eine Extended Partition mit der vollen, verfügbaren Größe einrichten.
  • Anschließend in jeder Partition ein logisches Laufwerk einrichten, ohne Buchstaben und ohne Formatierung.
  • Zum Test auf node2 prüfen, ob die neuen Partitionen auch dort gesehen werden. Gegebenenfalls mit F5 die Daten aktualisieren.

Clusterware installieren

  • node1: In das Installationsverzeichnis der Clusterware wechseln, z.B. D:\cluvfy
  • Cluster Verify ausführen, um vorab zu prüfen, ob alle Voraussetzungen erfüllt sind: runcluvfy stage -post hwos -n rac1,rac2
    • Die Fehlermeldung von cluvfy im Abschnitt „VIP“ kann ignoriert werden.
  • Clusterware-Setup starten: „setup.exe“ ausführen.
  • Die Voreinstellungen bis ausschließlich zum Punkt „Specify Network Usage“ übernehmen.
  • Der Installer erkennt die vorhandenen Netzwerkkarten, aber deren Verwendung für das private oder öffentliche Netz muss von Hand konfiguriert werden: Dazu muss die Netzwerkverbindung im Subnetz „10.2.x.x“ auf „private“ umgestellt werden.
  • Clusterware benötigt zwei Partitionen für die Verwaltung des Clusters. Diese werden im nächsten Schritt ausgewählt:
    • Die 200MB-Platte editieren und „Place OCR (Primary)…“ auswählen.
    • Die 40MB-Platte editieren und „Place Voting Disk…“ auswählen.
    • Die beim Weiterblättern folgende Warnung bzgl. Redundanz ignorieren.
  • ACHTUNG: Die Prüfungen am Ende laufen nicht einwandfrei durch. Dies liegt an den verwendeten IP-Adressen, die normalerweise nicht geroutet werden können (Details s. Oracle Note 338924.1). Das Setup für die virtuellen Adressen muss von der Kommandozeile manuell gestartet werden:
    C:\oracle\product\10.2.0\crs/bin/vipca.bat

    Dann trägt man für den ersten IP-Alias „rac1-vip“ ein, und der Rest der Felder sollte sich dann schon automatisch füllen. Mit OK bestätigen – fertig.

  • Bei Bedarf kann man jetzt noch vor der DB-Installation die Clusterware patchen, das erspart später etwas Aufwand.

Datenbanksoftware installieren

Hier setze ich mal etwas Erfahrung voraus und nenne nur die Besonderheiten bei der RAC-Installation:

  • Beide Clusterknoten auswählen
  • Meine Empfehlung: „Install Software only“, danach noch den Patch auf 10.2.0.4 einspielen.
  • Nach Abschluss der Installation den „Database Configuration Assistant“ (DBCA) starten und zunächst ASM einrichten:
    • Disk Group „DATA“ auf der 1 GB-Platte anlegen:
      • „Redundancy External“ anwählen,
      • „Stamp Disks“ anklicken und „Add or change label“ wählen
      • Die 1 GB-Platte auswählen und bei Prefix „DATA“ angeben.
    • Disk Group „FRA“ auf der 500 MB-Platte anlegen; Schritte wie oben.

Datenbank erstellen

Nun kann mit dem DBCA eine Datenbank eingerichtet werden, hier ein Beispiel:

  • DBCA starten, „Datenbank erstellen“ wählen
  • Beide Clusterknoten anwählen
  • Ein Datenbank-Template auswählen
  • Globalen Datenbanknamen und SID-Präfix: „ORAC“ eingeben
  • Verwaltungsoptionen: Voreinstellungen übernehmen
  • Passwort auswählen
  • ASM auswählen
  • Beide ASM-Plattengruppen („DATA“ und „FRA“) auswählen
  • Datenbankdateien: „Oracle Managed Files“, Bereich „+DATA“ auswählen
  • Flash Recovery Bereich „+FRA“ auswählen, Größe: 100 MB
  • Optionen nach Bedarf auswählen
  • DB-Services überspringen
  • Alle weiteren Voreinstellungen übernehmen und warten. ;-)

So, das war jetzt ein schneller und recht trockener Durchmarsch. Aber, wie schon erwähnt, es gibt ja auch schon diverse, bebilderte Tutorials zum Thema.

Optionen:

Page Fusion

Erlaubt die gemeinsame Nutzung von identischen Speichersegmenten in mehreren VMs. Bei knappem RAM ist das eine interessante Option, um mehr vom RAM nutzen zu können. Der Host muß dazu unter einem 64 Bit-OS laufen, die Gastsysteme unter Windows XP/200x. Nun lohnt es sich also doch noch, daß wir unter Windows installiert haben. ;-)

VBoxManage modifyvm "Win2k3_RAC1" --pagefusion on
VBoxManage modifyvm "Win2k3_RAC2" --pagefusion on

Es gibt allerdings Hinweise darauf, daß Page Fusion einen Crash der VM verursacht, wenn mehr als eine vCPU verwendet wird – also die Voreinstellung bei Multi-Core-Rechnern. Möglicher Workaround:

VBoxManage modifyvm vmname --cpus 1

Edit vom 14.10.2010: Dieser Workaround funktioniert in meinem Setup nicht, auch nicht mit der Version 3.2.10 von VirtualBox.

Fragen?

Anregungen, Kritik und Kommentare sind gerne gesehen!

 --remember

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s