Oracle VM mit Oracle RAC auf einem Rechner
von Sebastian Solbach, ORACLE Deutschland GmbH

Viele DBAs und Entwickler möchten gerne Erfahrungen mit dem Real Application Cluster von Oracle sammeln. Leider hat man aber selten die Hardware zur Verfügung um sich schnell einen Test-Cluster aufzubauen. Eine Lösung dafür heißt Virtualisierung. Was liegt also näher als sich eine RAC Umgebung mit Oracle Virtual Machine aufzubauen?

Nun stellen sich folgende Probleme: Erstens ist OVM ein Serverprodukt und keine Lösung wie VMware Server oder Workstation, welches einfach auf einem Windows/Linux Rechner läuft, zweitens sollte man für die Administration besser einen zweiten Server haben (für den VM Manager) und drittens findet man im Netz kaum Step-by-Step Anleitungen.

Da ich selbst ein Verfechter der Oracle VM (OVM) bin, war dies der Grund eine solche Anleitung zu verfassen. Allerdings merkte ich schnell, dass hierzu mehr erforderlich ist, als nur die simple RAC Installationsanweisung. Besonders, wenn man das Ziel verfolgte das Ganze mit nur einem! Laptop (mit nur einer Netzwerkkarte) zu machen. Aus diesem Grund ist der vorliegende Tipp auch etwas länger geworden und kann in folgende Teile aufgeteilt werden, die auch separat betrachtet werden können.

  1. Installation von OVM Server + Installation von OVM Manager auf dem selben Rechner mit graphischer Oberfläche
  2. Konfiguration eines NAT Netzwerkes, damit die RAC Server keine externen IP Adressen brauchen
  3. Installation des RAC
Haben Sie 2 Server so erübrigt sich Punkt 1. Können Sie genügend IP Adressen von Ihrem Netzwerkadministrator bekommen, erübrigt sich Schritt 2 und Ihr RAC ist auch von extern zu erreichen. (Bei der NAT Konfiguration haben Sie nur von dem VM Server direkten Zugriff auf die Gastsysteme). Besitzen Sie beides, gehen Sie gleich zur RAC Installation über.

Falls Sie das Ganze auch nur mit einem Server nachvollziehen wollen, so sollte der Server folgende Voraussetzungen erfüllen:
  • 4 GB RAM (2GB wären ausreichend, in diesem Falle dürfte den VM Gast Systemen nur weniger Speicher zu Verfügung gestellt werden - Dom0 512MB, DomU1 768MB DomU2 768MB)
  • 48 GB Festplattenplatz
  • Voraussetzungen an den Prozessor wie in der Dokumentation von OracleVM gelistet
Um sicher zu gehen, sollte immer die aktuelle Dokumentation berücksichtigen.

Software

Folgende Software wird benötigt. (Neuere Versionen können selbstverständlich verwendet werden, nur kann es hierbei zu Abweichungen bei der Anleitung kommen):

NamePart NumberSizeDownload Lokation
Oracle VM Server 2.1.5V16891-01334Mhttp://edelivery.oracle.com/linux
Oracle VM Manager 2.1.5V16914-01627Mhttp://edelivery.oracle.com/linux
Oracle Database 11g Release 1 (11.1.0.6.0) for Linux x86 (Part 1 of 2)V14230-01 Part 1 of 21.8Ghttp://edelivery.oracle.com
Oracle Database 11g Release 1 (11.1.0.6.0) for Linux x86 (Part 2 of 2)V14230-01 Part 2 of 21.1Ghttp://edelivery.oracle.com
Optional/Empfohlen: Oracle Database Family: Patchset 11.1.0.7.0Patch 68908311.5Ghttp://metalink.oracle.com

Hierbei muss nur die OVM Server CD gebrannt werden, alle andere Software kann direkt auf dem OVM Server liegen oder über das Netz gemounted werden.

Installation des OVM Servers

Die Installation des VM Servers erfolgt ganz nach der Dokumentation. Einfach die CD einlegen und den Rechner starten. Bitte bedenken Sie, dass bei einer Default Installation alle Daten auf dem Rechner verloren gehen. Es gibt durchaus Wege, den Rechner dual bootfähig zu machen und bestehende Installation nicht zu beeinträchtigen. Dies wird in diesem Tipp aber nicht behandelt. An dieser Stelle gilt es nur bei der Partionierung der Platte zu beachten, dass die Default Einstellungen verändert werden, da die Root Partition bei einem reinen VM Server recht klein gehalten ist. Dies würde nicht ausreichen, wenn später GNOME und der VM Manager installiert werden soll:

=> Install CD Server

=> <ENTER>
=> CD Found <Skip>
=> Keyboard <de>
=> Use Free space on select drives and create default layout <OK>
=> Review and modify partitioning layout? <Yes>
/dev/sda
	sda1	100M	ext3   /boot
	sda2	49152	ext3   /       Hier so viel Plattenplatz wie möglich !
	sda3	2048	swap

=> Boot Loader Configuration </dev/sda>
=> Choose Network Interface => eth0
=> Dynamic IP Address, or fixed / Enable IPv4 / Autostart on boot
=> Hostname
=> Time Zone <System clock uses UTC> <Europe/Berlin>
=> Oracle VM Agent password <pwd>
=> Root Password <pwd>
=> Install <OK>
=> Installation done <Reboot>
=> End User License Agreement <Agree>
Anmerkung: Da nur ein Server verwendet wird, brauchen wir kein OCFS2, sondern können den kompletten Bereich / als ext3 formatieren. Würde man später den OVS Rechner doch in ein VM Pool aufnehmen kann ein OCFS2 Repository immer noch hinzugefügt werden.

Installation der graphisches Benutzeroberfläche (GNOME)

Damit GNOME und damit später der VM Manager installiert werden kann, sollte als erstes die Memory Zuweisung für die Dom0 geändert werden. Dazu werden die Boot Informationen der Dom0 in /bott/grub/grub.conf angepasst:

vi /boot/grub/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
default=2
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
...
title Oracle VM Server-ovs (xen-3.1.4 2.6.18-8.1.15.3.1.el5ovs)
        root (hd0,1)
        kernel /boot/xen-32bit.gz dom0_mem=768M
        module /boot/vmlinuz-2.6.18-8.1.15.3.1.el5xen ro root=LABEL=/
        module /boot/initrd-2.6.18-8.1.15.3.1.el5xen.img
...
title Oracle VM Server-ovs (xen-64-3.1.4 2.6.18-8.1.15.3.1.el5ovs)
        root (hd0,1)
        kernel /boot/xen-64bit.gz dom0_mem=768M
        module /boot/vmlinuz-2.6.18-8.1.15.3.1.el5xen ro root=LABEL=/
        module /boot/initrd-2.6.18-8.1.15.3.1.el5xen.img
...
title Other
        rootnoverify (hd0,0)
        chainloader +1
Um nun GNOME zu installieren, könnte man einfach eine Enterprise Linux 5.0 CD verwenden, da der OVM Kernel ungefähr der 5.0 Version der EL5 Kernels entspricht. Allerdings geht dies seit einiger Zeit auch einfacher, wenn der Rechner über einen Zugriff auf das Internet verfügt. Oracle hat die CDs in einem YUM Repository öffentlich verfügbar gemacht: http://public-yum.oracle.com. Dieses Repository nehmen wir zur Hilfe um die aktuellen Binaries von OVM und EL5 GNOME herunterzuladen.
# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ovm2.repo
# wget http://public-yum.oracle.com/public-yum-el5.repo
Da zum Zeitpunkt dieses Tipps die aktuellen Binaries von OVM 2.1.5 (ovm2_2.1.5_base) noch nicht auf den Server geladen wurden, aktivieren wir das ovm2_2.1.2_base und das el5_ga_base.
# vi public-yum-ovm2.repo

[ovm2_2.1.2_base]
name=OracleVM 2 - 2.1.2 - $basearch - base
baseurl=http://public-yum.oracle.com/repo/OracleVM/OVM2/2.1.2/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1

# vi public-yum-el5.repo

[el5_ga_base]
name=Enterprise Linux $releasever GA - $basearch - base
baseurl=http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/0/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1
Zusätzlich müssen wir noch 1 Package (die Kernel Headers) von der OVM Server CD installieren. Sollte das ovm2_2.1.5_base bereits verfügbar sein kann das Package auch direkt über das Public Yum installiert werden (mit yum install kernel-headers).
# mount /dev/cdrom /media
# rpm -Uvh /media/Server/kernel-ovs-devel-2.6.18-8.1.15.3.1.el5.i686.rpm
# umount /dev/cdrom
Nun zur eigentlichen Installation des X Windows System und von GNOME. Hierzu lassen wir einfach yum alle notwendigen Packages ermitteln und installieren diese:
# yum groupinstall "X Window System"
# yum groupinstall "GNOME Desktop Environment"
Damit wir nun beim nächsten Reboot direkt die graphische Oberfläche erhalten ändern wir noch den RunLevel auf 5:
# vi /etc/inittab
> id:3:initdefault
< id:5:initdefault
Nun können wir entweder den Rechner durchstarten oder einfach mit
init 5
zur graphischen Benutzerfläche wechseln.

Installation des VM Managers in Dom0

Anstatt alle benötigten Systemanforderungen für eine Oracle Datenbank/Oracle XE Installation selber zu checken nehmen wir einfach das oracle-validated Package von Linux. Dies sorgt nicht nur für Standard EL5 Installationen für die benötigten Systemanforderungen, sondern auch bei RedHat und OVM Servern für die richtigen Kernel Einstellungen und Softwarepackages.

Informationen zum Oracle Validated Package finden Sie unter http://oss.oracle.com/el5/oracle-validated/

Da allerdings bei OVM Server eine andere libstdc++ zum Einsatz kommt, als oracle-validated kennt, wird kurzzeitig die Standard libstdc++ installiert. Ansonsten käme es zu folgender Fehlermeldung:
Error: Missing Dependency: libstdc++ = 4.1.1-52.el5 is needed by package libstdc++-devel
Error: Missing Dependency: libstdc++ = 4.1.1-52.el5 is needed by package gcc-c++

# cd
# wget http://oss.oracle.com/el5/oracle-validated/oracle-validated-1.0.0-5.el5.i386.rpm


# wget http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/0/base/i386/libstdc++-4.1.1-52.el5.i386.rpm
# wget http://public-yum.oracle.com/repo/OracleVM/OVM2/2.1.2/base/i386/libstdc++-4.1.1-52.el5.2.i386.rpm
# rpm -Uvh libstdc++-4.1.1-52.el5.i386.rpm --force
# yum install oracle-validated-1.0.0-5.el5.i386.rpm

# rpm -Uvh libstdc++-4.1.1-52.el5.2.i386.rpm --nodeps
Als nächstes folgt die Installation des Oracle VM Managers. Recht einfach kann man hier die Defaults akzeptieren:
=> 1. Install a new Oracle XE database on localhost
=> Specify the HTTP port that will be used for Oracle Application Express [8080]: <ENTER>
=> Specify a port that will be used for the database listener [1521]: <ENTER>
=> Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration: <pwd>
=> Confirm the password: <pwd>
=> Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: <ENTER>
Set default database schema to 'OVS'.
=> Please enter the password for account 'OVS': <pwd>
=> Confirm the password: <pwd>
=> Please enter the password for account 'oc4jadmin': <pwd>
=> Confirm the password: <pwd>
=> Please enter the keystore password for the Web Service: <pwd>
=> Confirm the password: <pwd>
=> Do you want to use HTTPS access for Oracle VM Manager (Y|n)? <N>
=> Please enter the password for the default account 'admin': <pwd>
=> Confirm the password: <pwd>
=> Please enter the outgoing mail server (SMTP) hostname: <mailserver>
=> Please enter an e-mail address for account 'admin': <email>

Installation of Oracle VM Manager completed successfully.

To access the Oracle VM Manager 2.1.5 home page go to:
  http://127.0.0.1:8888/OVS
...
Nun startet die XE Datenbank und der OC4J mit der Managementoberfläche beim Systemboot.
Falls man mehr Kontrolle über das Starten und Stoppen des OC4J und der Oracle XE Datenbank haben möchte, kann man folgenden "Feinschliff" durchführen und OC4J als Service für Linux einrichten. Dazu fügt man in den Header von /etc/init.d/oc4j folgende Einträge ein, damit chkconfig das Script oc4j als Service erkennt:
# chmod 755 /etc/init.d/oc4j
# vi /etc/init.d/oc4j

# chkconfig: 345 90 10
# description: Oracle VM Manager
Nun kann OC4J beim Startup konfiguriert werden und aus rc.local entfernt werden:
# chkconfig --add oc4j

Entfernen aus rc.local:
# vi /etc/rc.local
/etc/init.d/oc4j start
Ab nun kann oc4j und oracle-xe mit chkconfig administriert werden und konfiguriert werden (wann es starten soll), z.B:
# chkconfig --level 234 oc4j off
# chkconfig --level 234 oracle-xe off
# service oc4j start
# service oracle-xe stop
etc.
Damit die Console über einen Webbrowser gestartet werden kann, muss noch TightVNC installiert werden (http://oss.oracle.com/oraclevm/manager/RPMS/):
# wget http://oss.oracle.com/oraclevm/manager/RPMS/tightvnc-java-1.3.9-3.noarch.rpm
# yum install tightvnc-java-1.3.9-3.noarch.rpm
Zuletzt sollte noch die Firewall ausgeschaltet werden, falls auf den OVM Manager von extern zugegriffen wird:
# system-config-securitylevel-tui
=> Firewall: Disable
Nun kann zum ersten Mal auf den VM Manager zugegriffen werden. Dieser erfordert an dieser Stelle eine initiale Einrichtung. Die Angaben hierfür können Sie aus den Screenshots entnehmen (fü eine größere Ansicht auf die Screenshots klicken):
Bevor wir nun die ersten RAC Knoten installieren, kümmern wir uns nun um die Netzwerkkeinstellungen des VM Servers.

NAT Netzwerk

Dies ist dann sinnvoll, wenn auf die RAC Knoten nicht extern zugegriffen wird und Sie nicht von Ihrem Netzwerkadministrator zusätzliche Netzwerkaddressen beantragen wollen.

Die OVM Server funktionieren standardmäßig mit Bridges, die über die externen Netzwerkkarten mit dem Netzwerk kommunizieren. Diese Funktionalität wird als erstes abgeschaltet. Zwar bietet auch der Xen Server eine Einstellung für NAT, diese ist aber für unsere Zwecke ungeeignet. D.h. wir deaktivieren zuerst die Defaulteinstellungen des Xen Servers. Hierzu entfernen wir alle Einträge der Netzwerkkonfiguration aus der OVM Server Konfiguration /etc/xen/xend-config.sxp:

# vi /etc/xen/xend-config.sxp

Auskommentieren aller Netzwerkeinstellungen
# (network-script network-bridge)
# (vif-script vif-bridge)

Stoppen der vorhandenen Bridges und durchstarten des Xen Daemons:
# /etc/xen/scripts/network-bridges stop
# service xend restart
Nun fügen wir unsere eigenen Bridges mit den eigenen Netzwerken hinzu - eine fürs Public Network der RAC Knoten und eines für den Private Interconnect. In meinem Falle habe ich 192.168.5.1/24 für Public und 10.10.5.1/24 für den Interconnect gewählt. Dies könnte mit brctl geschehen. Der Vollständigkeit wegen habe ich diese hier aufgelistet:
# brctl addbr xenbr0
# brctl stp xenbr0 off
# brctl setfd xenbr0 0

# brctl addbr xenbr1
# brctl stp xenbr1 off
# brctl setfd xenbr1 0

# ip addr add 192.168.5.1/24 brd + dev xenbr0
# ip link set up xenbr0

# ip addr add 10.10.5.1/24 brd + dev xenbr1
# ip link set up xenbr1
Diese Einstellungen sind aber nicht permanent und müssten nach jedem Reboot gemacht werden. Permanent werde diese Einstellungen durch Anlegen von /etc/sysconfig/network-scripts/ifcfg-xenbr0 und ifcfg-xenbr1. Zur Aktivierung started man danach das Netzwerk durch. Gegebenenfalls sollte man kurz noch system-config-network aufrufen, da hierdurch die Einstellungen von Linux noch in 2 weitere Ordner kopiert werden.
# vi /etc/sysconfig/network-scripts/ifcfg-xenbr0

DEVICE=xenbr0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.5.1
NETMASK=255.255.255.0
BROADCAST=192.168.5.255
DELAY=0
STP=off

# vi /etc/sysconfig/network-scripts/ifcfg-xenbr1

DEVICE=xenbr0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.10.5.1
NETMASK=255.255.255.0
BROADCAST=10.10.5.255
DELAY=0
STP=off

# service network restart
Damit nun die Gastsysteme mit dem externen Netzwerk kommunizieren können, muss in der Dom0 das sogenannte IP forwarding aktiviert werden und iptables die Weiterleitung dieser IP Packete garantieren. Eth0 ist dabei die Netzwerkkarte über die das externe Netzwerk angesprochen wird:
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1

# sysctl -p              

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Permanentes Speichern der iptables Regeln:
# service iptables save
Zum Testen der Konfiguration sollte der route Befehl nun folgendes ausgeben:
# route -na
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 xenbr0
10.10.5.0       0.0.0.0         255.255.255.0   U     0      0        0 xenbr1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
Die Netzwerkkonfiguration in der Gast VM später ist relativ einfach:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=192.168.5.21
NETMASK=255.255.255.0
GATEWAY=192.168.5.1
Nun können wir unseren ersten RAC Knoten mit Linux installieren.

Anlegen der ersten VM (RAC Knoten 1)

Um ein paravirtualisiertes Linux zu installieren, brauchen wir ein NFS Mount auf den das zukünftige Gast System Zugriff hat. Ich habe hierzu einfach die aktuelle Oracle Enterprise Linux 5.3 DVD auf den VM Server unter /stage kopiert und dort extrahiert.
Ebenso könnte man nun bereits auch ein bestehendes Oracle VM Template verwenden. Siehe hierzu http://edelivery.oracle.com/linux. Das RAC Template ist aber noch nicht verfügbar.

HINWEIS: Da das aktuelle Unzip auf EL5/OVM nur Files bis 2GB Größe unterstützt findet man unter http://oss.oracle.com/el4/unzip/unzip.html ein neueres Unzip Utility, welches verwendet werden kann, die OEL 5.3 DVD oder die Templates zu entpacken.

Nun muss noch die DVD über NFS im Zugriff sein:

# mkdir /stage/linux
# mount -o loop /stage/Enterprise-R5-U3-Server-i386-dvd.iso /stage/linux
# service nfs start
# exportfs *:/stage/linux
Das Anlegen der Virtuellen Maschine passiert nun über die VM Manager Oberfläche:
=> Virtual Machines
=> Create Virtual Machine
1.) Creation Method
Create from installation media
2.) Server Pool
Select Server Pool
3.) Source
Virtual Method: Paravirtualized
Resource Location: nfs:192.168.5.1:/stage/linux
4.) Virtual Machine Information
Virtual Machine Name: ovmrac1
Operating System: Oracle Enterprise Linux 5
Number of Virutal CPUs: 1
Keyboard Layout: German
Memory Size (MB): 1536
Virtual Disk Size (MB): 16384
Console Password: <pwd>
Confirm Console Password: <pwd>
Enable High Availability: No
VIF0 => xenbr0
VIF1 => xenbr1
5.) Confirm
Die Screenshots zeigen die Eingaben (fü eine größere Ansicht auf die Screenshots klicken):
Nun wäre es möglich über den Button "Console" eine VNC Console auf das neue Gast zu öffnen, es ist aber sehr viel angenehmer direkt einen vncviewer zu verwenden:
# vncviewer &
localhost:0
Folgende Screenshots (fü eine größere Ansicht auf die Screenshots klicken) geben den Installationsverlauf wieder (allerdings hatte die VM nur 12284MB Platte zur Verfügung).
Folgende Eingaben führen Sie schnell durch die Linux Installation. Es steht Ihnen natürlich frei dies anders zu konfigurieren:
> English <OK>
> de <OK>
> eth0 <OK>
> Enable IPv4 / Manual configuration
> IPv4 Address: 192.168.5.21 / 255.255.255.0 
  Gateway:      192.168.5.1
  Name Server:  192.168.2.1 (Standard Nameserver der Dom0, bei mir war es der Router).
> Next
> Erase Data <YES>
> Remove Linux Partitions and create default layout <Next>
> Erase Data <Yes>
> Grub /dev/xvda <Next>
> Netzwerk:
  eth0  192.168.5.21/24
  eth1  10.10.5.21/24
  Hostname:    ovmrac1
  Gateway:     192.168.5.1
  Primary DNS: 192.168.2.1 (Standard Nameserver der Dom0)
> Timezone <Europe/Berlin> <Next>
> PWD
> Software Default <Next>
> Next
> Reboot
OVM hat die Eigenheit, nach der Linux Installation nicht automatisch selber zu rebooten. Deswegen über den OVM Manager neu starten und erneut mit dem vncviewer darauf zugreifen:
Auch hier wieder die wichtigsten Eingaben:
> Forward
> Agree <Forward>
> Firewall Disabled <Forward>
> SELinux Disabled <Forward>
> NTP konifgurieren, falls im Netz vorhanden
> Username weglassen (zumindest nicht oracle anlegen, diesen legen wir später mit dem oracle-validated an).
> Forwared
> Finish

Klonen des Zweiten RAC Knotens

Den zweiten RAC Knoten könnte man nun gleich anlegen, wir werden aber nun das erste Gastsystem einfach Klonen. Dazu muss das zu klonende System allerdings gestoppt werden (Power Off). Das Klonen findet man bei "More Actions":
Allerdings bekommt das geklonte System die Nummer 0. Dies kann man aber einfach umbenennen.

Bei geklonten Rechnern wären die Netzwerkeinstellungen gleich wie beim Primärknoten, deswegen hat der geklonte Rechner nach dem Starten kein richtiges Netzwerk. Nun gibt es zwei Möglichkeiten:

Ändern der Netzeinstellungen nach dem Startup:

# system-config-network
Hier werden die eth0.bak und eth1.bak Devices entfernt. Dann wird eth0 und eth1 mit den richtigen IP Adressen konfiguriert und zum Schluss noch der Hostname geändert. Als letztes sollte man noch die restlichen Einträge die auf das *.bak Device verweisen löschen:
# rm -rf /etc/sysconfig/network/devices/*.bak
# rm -rf /etc/sysconfig/network/profiles/default/*.bak
Eine andere Möglichkeit ist die Änderung der Netzwerkeinstellungen vor dem Starten der VM. Hierzu notieren wir uns die MAC Adressen, die der VM Manager anzeigt. Dann Mounten wir das System.img File und versehen network-scripts/ifcfg-eth0, newtork-scripts/ifcfg-eth1 und network im System Image mit dem richtigen Hostnamen und den richtigen MAC Adresse und der IP Adresse. Allerdings kommt es nun darauf an, wie die Systemplatte partitioniert wurde. Wurden nur physical und logical Partitions verwendet, kann dies leicht mit lomount gemounted werden. Das Default Layout von EL5 verwendet aber den Logical Volume Manager (LVM) von Linux, wodurch das Mounten der root Partition etwas aufwändiger ist:
# mkdir /tmp/mnt
Mounten einer Physical Partition mit Hilfe von lomount:
# lomount -t ext3 -diskimage /OVS/running_pool/XX_ovmrac2/System.img /mnt/tmp
Mounten einer LVM Partition
# losetup -f
/dev/loop2
# losetup /dev/loop2 /OVS/running_pool/XX_ovmrac2/System.img
# kpartx -av /dev/loop2
# vgscan
# vgchange -ay VolGroup00
# lvs
# mount /dev/VolGroup00/LogVol00 /tmp/mnt
Nun kommen die eigentlichen Änderungen der Netzwerk Einstellungen:
# vi /mnt/tmp/etc/sysconfig/network (Hostname)
# vi /mnt/tmp/etc/sysconfig/network-scripts/ifcfg-eth0 (MAC,IP-Adresse)
# vi /mnt/tmp/etc/sysconfig/network-scripts/ifcfg-eth1 (MAC,IP-Adresse)
# vi /mnt/tmp/etc/resolv.conf (Nameserver)
Unmounten der Partition
# umount /tmp/mnt
Weitere Schritte notwendig bei einer LVM Partition
# vgchange -an VolGroup00
# kpartx -d /dev/loop2
# losetup -d /dev/loop2
Danach stoppen wir das System wieder (bei Netzwerkkonfiguration am laufenden System) oder starten das Gast Systeme noch nicht (bei der Änderung der Einstellungen im System.img File), da wir noch die gesharten Platten für OCR/Voting Disk und ASM hinzufügen.

Platten für OCR/Voting Disk und ASM

Über den Punkt Resources => Shared Virtual Disk => Create Shared Virutal Disk legen wir die Platten für OCR/Voting Disk und ASM an. In meinem Beispiel nehme ich nur 1 Platte mit 1024MB für OCR und Voting Disk und 1 Platte mit 4096 MB für ASM. Die Screenshots zeigen nur das Anlegen der OCR/Vote (fü eine größere Ansicht auf die Screenshots klicken):
Nach dem Anlegen der Platten muss ich diese noch der VMs zuordnen:
Nun können die VMs gestartet werden (Power On). Was nun folgt ist eigentlich eine Standard RAC Installation.

RAC Installation

Da es genügend Quellen für eine RAC Installation gibt, beschränkt sich dieser Abschnitt auf das Wesentliche. Es werden auch keine Screenshots mehr angezeigt.

1.) Anpassen der /etc/hosts in beiden Gastsystemen (DomU), diese Einträge sollte man natürlich auch in der Dom0 vornehmen:

# vi /etc/hosts

127.0.0.1     localhost.localdomain   localhost

192.168.5.21  ovmrac1
192.168.5.22  ovmrac2

10.10.5.21    ovmrac1p
10.10.5.22    ovmrac2p

192.168.5.41  ovmrac1v
192.168.5.42  ovmrac2v
2.) Deaktivierung unnötiger Services für RAC:
# chkconfig --level 345 cpuspeed off
# chkconfig --level 345 sendmail off
3.) Installation von Oracle-Validated in den DomUs:
# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-el5.repo
# vi public-yum-el5.repo

[el5_u3_base]
name=Enterprise Linux $releasever U3 - $basearch - base
baseurl=http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/3/base/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1

# cd 
# wget http://oss.oracle.com/el5/oracle-validated/oracle-validated-1.0.0-5.el5.i386.rpm
# yum install oracle-validated-1.0.0-5.el5.i386.rpm
4.) Konfiguration Hangchecktimer (siehe Metalink Notes 567730.1, 726833.1 und 559365.1) und Kernelparameter:
# modprobe hangcheck-timer  hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1
Grundsätzlich sollten die DomUa für RAC nach ihrer "eigenen" Zeit laufen. Dies geschieht über den Kernelparameter xen.independent_wallclock=1. Hierzu sollte aber ein NTP Server im Netz vorhanden sein, über den die DomU Ihre Zeit abgleichen können. Desweiteren passt auch ein Kernelparameter dem Installer der Datenbank nicht. Diesen passen wir gleich mit an:
# vi /etc/sysctl.conf
# net.core.rmem_default=4194304
# xen.independent_wallclock=1

Neuladen der Kernelparameter
# sysctl -p
Ebenfalls hat beim Oracle Validated Package der oracle User nicht oinstall als Primärgruppe. Auch dieses wird angepasst:
# usermod -g oinstall -G dba oracle
5.) Als nächstes werden die geshareten Platten vorbereitet (auf einem Knoten). Auf dem anderen Knoten wird für das Auslesen der Partitionen einfach ein partprobe abgesetzt. Für die richtigen Berechtigungen passen wir einfach eine udev Regel an und starten udev neu:
# fdisk /dev/xvdb
n
p
1
<ENTER>
+280M
n
p
2
<ENTER>
+280M
w

# fdisk /dev/xvdc
n
p
1
<ENTER>
<ENTER>
w

# vi /etc/udev/rules.d/99-oracle.rules

KERNEL=="xvdb1", OWNER="root", GROUP="oinstall", MODE="0640", SYMLINK="ocr"
KERNEL=="xvdb2", OWNER="oracle", GROUP="oinstall", MODE="0640", SYMLINK="vote"
KERNEL=="xvdc1", OWNER="oracle", GROUP="dba", MODE="0660", SYMLINK="asm"

# udevcontrol reload_rules
# start_udev

Auf dem zweiten Knoten (nachdem wir ebenfalls die UDEV Regeln angepasst haben muss nun nur die Partitionstabelle ausgelesen werden
partprobe /dev/xvd*
6.) Konfiguration von ssh für den oracle User (hier die Kurzform):
Auf beiden Knoten
$ mkdir .ssh
$ chmod 700 .ssh
$ ssh-keygen
$ <ENTER>
$ <ENTER>
$ <ENTER>

Von Knoten 1
$ cat .ssh/id_rsa.pub >>.ssh/authorized_keys
$ scp .ssh/authorized_keys <node2>:.ssh/.
$ cat .ssh/id_rsa.pub >>.ssh/authorized_keys
$ scp <node2>:.ssh/authorized_keys .ssh/.

Die folgenden Befehle sollten danach von beiden Knoten ohne Eingaben laufen:
$ ssh <node1> date
$ ssh <node2> date
7.) Nun zur eigentlichen Clusterware und Datenbank Installation. Hierzu sharen wir wieder ein Verzeichnis auf der Dom0 über NFS. In meinem Falle eine 11g Oracle DVD:
In der Dom0
# mkdir /stage/oracle
# mount -o loop Ora11gLinx86.iso /stage/oracle
# service nfs start
# exportfs *:/stage/oracle

In einer DomU
# mkdir /stage
# mount 192.168.5.1:/stage/oracle /stage

Anlegen der Verzeichnisse für Oracle Installation:
# mkdir /opt/crs
# mkdir /opt/oracle
# chown oracle:oinstall /opt/crs
# chown oracle:oinstall /opt/oracle

# su - oracle

Ausführen von CLUVFY. Normalerweise immer das aktuellste von OTN verwenden:
$ /stage/runcluvfy.sh stage -pre crsinst -n ovmrac1,ovmrac2 -verbose
8.) Installation der Clusterware folgt nun über den vncviewer auf localhost:0 :
$ /stage/runInstaller
=> Product
Oracle Clusterware
=> Inventory
Inventory => /opt/oracle/oraInventory
Group => oinstall
=> Home
Name => OraCrs11g
Path => /opt/crs
=> Prerequisites
No Error
=> Cluster Configuration
Name => ovmrac
ovmrac1         ovmrac1p        ovmrac1v
ovmrac2         ovmrac2p        ovmrac2v
=> Network
eth0 => Public
eth1 => Private
=> OCR
External Redundancy
Location => /dev/ocr
=> Voting Disk
External Redundancy
Location => /dev/vote
=> Install

Root.sh sequentiell auf beiden Knoten
# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/crs/root.sh
9.) Danach Patchen auf 11.1.0.7: Achtung: Richtiges Home auswählen. Einfach den Anleitungen des Installers folgen.

10.) Nun folgt die Installation der Datenbank Software:
=> Install Database
=> Enterprise Edition
=> Install Location
Oracle Base => /opt/oracle
Name => OraDb11g
Path => /opt/oracle/product/db
=> Cluster
All Nodes
=> System Prerequisites
GGf Swap Space vernachlässigen
=> Privileged Group
dba
=> Create DB
Install DB Software only
11.) Auch hier danach erst einmal auf 11.1.0.7 patchen. Auch hier wieder auf die Auswahl des richtigen Homes achten.

12.) Aufruf des NETCA zur Konfiguration der Listener:
$ . oraenv
ORACLE_SID=ovmrac
ORACLE_HOME=/opt/oracle/product/db

$ netca
=> Cluster congfiguration
=> Select all nodes
=> Listener configuration
=> Add
=> LISTENER (default)
=> TCP (default)
=> 1521 (default)
=> No
=> Finish
13.) Aufruf des DBCAs zur Konfiguration von ASM:
$ dbca
=> Oracle Real Application Clusters database
=> Configure Automatic Storage Management
=> Select All
=> Password, Rest Default
=> o.k.
=> Create New DiskGroup
=> Change Disk Discovery Path
=> dev/asm*
=> Disk Group Name, External Redundancy, Select Disk
=> Ergebnis: 1 Mounted Diskgroup
=> Finish
14.) Aufruf des DBCAs zur Konfiguration von der RAC Datenbank:
$ dbca
=> Oracle Real Application Clusters database
=> Create Database
=> Select all nodes
=> Custom Database
=> SID
=> Configure Enterprise Manager
=> Passwords
=> Automatic Storage Management
=> Diskgroup auswählen
=> Use Oracle-Managed Files
=> Flashback/Archiving
=> DB Options
=> Memory (Vorsicht bei Use Automatic Memory Management > /dev/shm beachten!)
=> Security
=> Enable automatic maintenance tasks
=> Storage (GGf 1 Redolog pro Thread hinzufügen, da nur 2 Logs pro Thread vorhanden)
=> Create DB/Save Template/Scripts
=> Review + Finish
FERTIG! Viel Spass mit Ihrem Single Node RAC unter Oracle VM.

Nützliche Links und Referenzen

  • Oracle Real Application Clusters in Oracle VM Environments
  • Clusterware Installation Guide for Linux
  • Oracle VM Dokumentation
  • Oracle Public Yum Server
  • Zurück zur Community-Seite