Blog Sebastian

Blog Sebastian

sebastian blog ohne logo

Oracle Fail Safe - Hochverfügbare Datenbank im Windows Cluster (2)

Veröffentlicht: 20. Dezember 2013
Geschrieben von Sebastian Winkler

Oracle Failover Cluster - Teil 2

Na gut, vorher noch ein bisschen unseren neuen Windows Cluster testen, hoch- und runterfahren, Failover-Test, schadet ja nicht, aber dann installieren wir auch schon unsere Oracle Software. Zu empfehlen ist, erstmal nur die Datenbanksoftware zu installieren, wieder auf beiden Seiten 1:1, welche Edition Sie dabei wählen bleibt Ihnen überlassen. Hierbei muss man noch keine Besonderheiten beachten, nur nicht versehentlich die Software auf einer Cluster-Disk installieren. Das Ganze ließe sich theoretisch auch auf eine laufende Produktiv-Umgebung aufsetzen. Fraglich ob man diesen Weg geht, aber nicht auszuschließen. Bevor es weiter geht, noch einen neuen LISTENER mit dem Net-Konfigurationsassistenten erstellen und fertig.

Jetzt geht es weiter mit Oracle Fail Safe: Die Installationsdateien bekommen Sie gut vergraben auf Oracle.com unter Downloads > Database > Windows > Products, sowohl als 32bit als auch 64bit Version. Nach entpacken des ZIP-Verzeichnisses die setup.exe ausführen und der Universal Installer begrüßt Sie - weiter. Bei Auswahl der Installationsart empfehle ich auf beiden Seiten „Typical“‚ welche auch wirklich alle notwendigen Komponenten installiert. Bei der Auswahl des Installationsverzeichnisses müssen Sie aufpassen, nicht die Cluster Disk zu nehmen. Danach den berechtigten Domainuser für Oracle Fail Safe angeben, welcher später als Mitglied der Administratorengruppe auch auf alle Nodes zugreifen kann. In unserer Testumgebung machen wir es uns einfach und nehmen den globalen Administrator-Account mit dem wir auch alles installieren. Im Programm-Menü für OFS findet sich nach der Installation ein Tool namens „Set Credentials“ mit dem wir auf jedem Node den User auch später noch ändern können. Die ganze Installation wiederholen wir auf dem zweiten Server und können danach auch gleich mit der Cluster-Konfiguration loslegen. Wir halten uns nicht lange auf und wählen im Programm-Menü nicht „Oracle Fail Safe Manager“ sondern „Cluster Tools“. Der Unterschied: Ersteres öffnet in einer MMC nur den Oracle Fail Safe Manager, „Cluster Tools“ hingegen in einer MMC den Oracle Fail Safe Manager (FSM) und zusätzlich den Microsoft Failover Cluster Manager (FCM). So haben wir beides im direkten Zugriff. Bei Auswahl des FSM sollte auch unser bereits vorbereitetes Cluster erscheinen, wählen wir dieses aus, erscheint beim ersten Mal ein „Confirm Finish Installation“ Fenster, OK, was sollten wir auch dagegen haben!? An dieser Stelle wird das Cluster erstmal verifiziert und untersucht. Es sollte keine Warnungen geben. Gehen wir dann weiter und wählen „Oracle Resources“ sehen wir, dass es da noch nichts zu sehen gibt. Da wir im Moment eine frische Installation und keine Datenbank haben, gibt es auch keine entsprechenden Resources. Das ist dann auch der Zeitpunkt an dem wir unsere Datenbank anlegen.

Failover Datenbank

Die Datenbank kann man am einfachsten über den Datenbank-Konfigurationsassistenten erstellen - keine große Sache. Wichtig nur bei der Datenbankkonfiguration, dass wir an den richtigen Stellen unsere dafür vorgesehene Cluster-Disk referenzieren. Also zunächst einmal der Speicherort von Datenbankdateien und den Fast-Recovery-Bereich. Dazu sollte man vorher jeweils einen Ordner auf der Cluster-Disk erstellen. Wenn die Datenbank steht empfiehlt es sich zudem Audit- und Diag-Verzeichnis auf den Cluster zu legen. D.h. ebenfalls jeweils einen Ordner anlegen und per ALTER SYSTEM SET AUDIT_FILE_DEST bzw. DIAGNOSTIC_DEST das Verzeichnis umlegen. Shutdown, startup und fertig.

Was jetzt kommt hat mir zuvor den einen oder anderen Nerv geraubt. Der entscheidende Tipp kam vom erfahrenen Experten. Damit unsere künftige Failover-Konstruktion funktioniert, muss natürlich auf beiden Seiten ein Parameter-File liegen. Die Dokumentation schweigt sich dazu weitestgehend aus und der ein oder andere Screenshot suggeriert, dass eine INIT.ora auf dem Cluster ausreicht, aber nicht nur weit gefehlt, sondern auch Pustekuchen. Funktioniert hat die spätere Failover-Konfiguration erst, als ich das Original SPFILE meiner Datenbank auf das Cluster gelegt und im $ORACLE-HOME\database-Verzeichnis stattdessen nur noch eine INIT.ora mit folgendem Inhalt belassen habe: spfile='F:\init.ora', also einem einfachen Link auf das SPFILE auf der Cluster-Disk. Am einfachsten CREATE PFILE FROM SPFILE die INIT.ora alles rauslöschen und wie beschreiben editieren. Das SPFILE dann in den selbsterwählten Pfad auf die Cluster-Disk verschieben. Puhhh … shutdown … Darauf muss man erstmal kommen. Steht nirgends … startup. Die Datenbank sollte ordnungsgemäß wieder hochfahren. INIT.ora und PWD.ora brauchen wir für den Failover natürlich auch auf dem zweiten Server, daher rüber kopieren und weiter. Jetzt in den Fail Safe Manager. Unsere Datenbank sollte als „Available Oracle Resource“ erscheinen. Wenn das der Fall ist brauchen wir noch einen entsprechenden Service, Oracle nennt das Gruppe. Wenn man also die Datenbank auswählt und mit „Add Resource…“ meint man könne einfach einen Cluster erstellen, dann irrt man. Man wird mit folgender Fehlermeldung stehen gelassen: „You need to create a group before adding a resource.“. Ja kein Problem, erstellen wir eine Gruppe, aber wie? Wieder lässt uns die Dokumentation im Regen stehen. In der Vorgängerversion gab es wohl eine entsprechende Auswahl zur Erstellung. Gibt es jetzt nicht mehr. Die Lösung ist relativ simpel. Wir müssen in den Microsoft Failover Cluster Manager und unter „Services and applications“ eben einen neuen Service erstellen. Am besten über „More Actions...“ à „Create Emty Service Or Application“. Den neu erstellten Service auswählen und Rechte Maustaste (RMT) à „Eigenschaften“ bzw. „Properties“. Im folgenden Fenster einen Namen vergeben und unsere beiden Server als „preferred owner“ aktivieren à OK. Dann nochmal RMT à „Add a resource“ à „1 – Client Access Point“.

Einen Namen und eine freie IP-Adresse vergeben à OK. Service auswählen à RMT à „Bring this service or application online“. Damit haben wir das Problem mit der fehlenden Gruppe gelöst. Unter Oracle Resources haben wir jetzt eine Gruppe bzw. Group. Jetzt nochmal RMT auf unsere Datenbank und à „Add Resource…“, dann geht es weiter und unser Service steht als „Group“ zur Auswahl, da wir nur zwei Nodes haben und unser Service nur eine IP-Adresse, werden die Punkte „Nodes“ und „Virtual Host“ gleich übersprungen und wir geben unser Parameterfile an. Nicht das SPFILE auf dem Cluster, sondern unsere lokale INIT.ora im database-Verzeichnis à Finish.

Jetzt folgt wieder eine Validation. Je nachdem wie unser Listener konfiguriert ist, wandelt er nach einem à Yes, Listener-Einträge mit Hostnamen in eindeutige IP‘s um. An dieser Stelle sollte man also nochmal seine DHCP- bzw. DNS-Einstellungen gedanklich überprüfen, damit es später keine bösen Überraschungen gibt. Ja und somit ist es geschafft. Die Zusammenfassung besagt, dass unser Failover Cluster erfolgreich erstellt und auch schon getestet wurde. Jetzt können wir unsere Group nehmen und diese auf den anderen Server schwenken. RMT auf die Group und „move“. Wir erhalten die Warnung, dass die Datenbank dafür geschlossen werden muss und nach einem „Yes“ geht es los. Ab hier habe ich wirklich keine Probleme mehr gehabt. In knapp einer Minute und weniger ist der Switch passiert. Hoch- und Runterfahren macht unserem Cluster keine Probleme ohne Murren oder manuelles Hand anlegen wird das Failover Cluster wieder verbunden. Ich war wirklich positiv überrascht. Blöd war nur, dass ich jetzt einen Server rumstehen hatte, der absolut nichts zu tun hatte. Wie man den dann auch noch in Arbeit bringt und eine Lastverteilung mit mehreren Datenbanken auf zwei Failover-Server aufsetzt verrate ich demnächst.

Sebastian Winkler

CarajanDB GmbH

Siemensstr. 25  50374 Erftstadt

Fon: +49 (2235) 170 91 83

Fax: +49 (2235) 170 79 78

Mail: info@carajandb.com

 

carajan-db-logo