Blog 
Standard Edition High Availability

Am 7. Mai hat Oracle „Standard Edition High Availability” kurz SEHA frei gegeben. Da ja Oracle RAC mit der Version 19 für die Standard Edition nicht mehr zur Verfügung steht (siehe Blog „Kein RAC mehr für Standard Edition„), stellte sich die Frage, wie man eine Oracle Standard Edition hoch verfügbar machen kann. Bereits im März hatte Oracle hierzu angekündigt, dass es eine Lösung geben wird – jetzt ist sie da.

SEHA ist eine Lösung bestehend aus der Oracle Clusterware für zwei Knoten sowie einer Standard Edition Datenbank, die als Single Instanz betrieben wird. Voraussetzung ist (mindestens) die Version 19c mit dem Relesae Update vom April 2020, d.h. die Version 19.7.

Software Installation

Die Installation der Grid Infrastructure werde ich an dieser Stelle nicht näher beschreiben, dazu gibt es ausreichend viele Blogs und Dokumente. Da SEHA nur mit ASM oder ACFS betrieben werden darf, entfällt allerdings die von mir sehr geliebte Installation auf NFS.

Ein kleiner Hinweis: bei meiner Installation der Grid Infrastructure Software brach der Release Update 19.7 wiederholt mit dem Fehler „CLSRSC-400: A system reboot is required to continue installing“ ab. Den Fehler konnte ich nur dadurch beheben, dass ich folgende Zeilen editiert habe:

grid@seha01% vi $ORACLE_HOME/lib/acfstoolsdriver.sh
#exec ${RUNTHIS} $@
exit 0

Die Datenbank Software wird zunächst nur auf einem Knoten installiert:

oracle@seha01% mkdir -p /u01/app/oracle/product/19/dbhome_1
oracle@seha01% cd /u01/app/oracle/product/19/dbhome_1
oracle@seha01% unzip /stage/oracle /19c/LINUX.X64_193000_db_home.zip
oracle@seha01% ./runInstaller -applyRU /stage/19/patch/30899722/30869156

Auch hier erspare ich mir die Installationsdetails, da sie in vielen anderen Blogs beschrieben werden. Wichtig ist, dass „Set Up Software Only“ „Single instance database installation“ und natürlich „Standard Edition 2“ ausgewählt wird.

Der zweite Knoten wird anschließend über „addnode“ hinzugenommen:

oracle@seha01% $ORACLE_HOME/addnode/addnode.sh -silent CLUSTER_NEW_NODES=seha02

Damit ist die Software Installation abgeschlossen.

Datenbank Erstellung

Seit langem habe ich mir angewöhnt, Datenbanken, wo möglich, mit dem dbca zu konfigurieren und dann die erstellten Skripte auszuführen. Die Details zum Anlegen einer Oracle Standard Edition Datenbank erspare ich mir auch hier.

In den erstellten Skripten gibt es zunächst keinen Hinweis auf SEHA, wie soll es auch, der dbca weiß ja nichts davon. Hier ein Auszug aus den Skripten.

oracle@seha01[CARAJAN]% more CARAJAN.sql
set verify off
ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE
ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE
ACCEPT pdbAdminPassword CHAR PROMPT 'Enter new password for PDBADMIN: ' HIDE
host /u01/app/oracle/product/19/dbhome_1/bin/srvctl add database -d CARAJAN -o /u01/app/oracle/product/19/dbhome_1 -n CARAJAN -x seha
01 -a "DATA,FRA"
host /u01/app/oracle/product/19/dbhome_1/bin/srvctl disable database -d CARAJAN
host /u01/app/oracle/product/19/dbhome_1/bin/orapwd file=/u01/app/oracle/product/19/dbhome_1/dbs/orapwCARAJAN force=y format=12
host /u01/app/grid/product/19/gridhome/bin/setasmgidwrap o=/u01/app/oracle/product/19/dbhome_1/bin/oracle
@/u01/app/oracle/admin/CARAJAN/scripts/CreateDB.sql
@/u01/app/oracle/admin/CARAJAN/scripts/CreateDBFiles.sql
@/u01/app/oracle/admin/CARAJAN/scripts/CreateDBCatalog.sql
@/u01/app/oracle/admin/CARAJAN/scripts/CreateClustDBViews.sql
@/u01/app/oracle/admin/CARAJAN/scripts/lockAccount.sql
@/u01/app/oracle/admin/CARAJAN/scripts/postDBCreation.sql

Die Datenbank ist jetzt als Cluster Ressource angelegt. Was noch fehlt, ist ein Eintrag für den zweiten Server, das holen wir jetzt nach:

oracle@seha01[CARAJAN]% srvctl modify database -db CARAJAN -node seha01,seha02

Außerdem liegt aus unerklärlichen Gründen die Passwort Datei nicht im ASM sondern im ORACLE_HOME/dbs Verzeichnis. Also müssen wir auch das noch ändern:

grid@seha01[CARAJAN]% asmcmd pwcopy /u01/app/oracle/product/19/dbhome_1/dbs/orapwCARAJAN +DATA/CARAJAN/orapwCARAJAN 
oracle@seha01[CARAJAN]% srvctl modify database -db CARAJAN -pwfile +DATA/CARAJAN/orapwCARAJAN

Damit ist SEHA fertig!

Fazit

Die Installation ist extrem einfach und erste Tests waren ziemlich erfolgreich: beim Ausschalten eines Servers wird die Datenbank Instanz innerhalb einer Minute auf dem anderen Knoten gestartet. Auch ein Schwenken der Datenbank (relocate) funktioniert.

oracle@seha01[CARAJAN]% srvctl relocate database -db CARAJAN -node seha0

Allerdings bin ich dann doch noch auf ein Problem gestoßen:

Für Tests habe ich eine PDB mit dem Namen JOHANNES angelegt und, wie es auch sein sollte, einen zusätzlichen Service mit dem Namen DEMO. Solange der Service gestartet ist, gelingt es mir nicht, ein Relocate durchzuführen. Der Shutdown der ursprünglichen Instanz bleibt beim Schließen der PDB hängen. Dadurch kann natürlich die neue Instanz nicht gestartet werden. Stoppe ich allerdings vorher den Dienst, funktioniert der Relocate einwandfrei.

Weitere Informationen zu dem Thema finden Sie unter anderem bei Markus Michalewicz https://blogs.oracle.com/maa/standard-edition-2-announcing-standard-edition-high-availability und Markus Flechtner https://www.markusdba.net/2020/05/11/standard-edition-high-availability-first-impressions/

Jetzt wünsche ich viel Erfolg beim Testen und bin natürlich gerne für Sie da, wenn es Probleme geben sollte.

Nachtrag:

Das Problem, dass das Relocate mit Services nicht funktioniert, ist mittlerweile gelöst (siehe Bug 31128434).

Keine Kommentare zu “Standard Edition High Availability

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Was kann CarajanDB für Sie tun?