Read-Only Oracle Homes
Beginnend mit Oracle 18c kann ein Oracle Home Read Only betrieben werden. Da immer noch einige wichtige Konfigurationsfiles innerhalb des ORACLE_HOMEs liegen, müssen diese umgesiedelt werden. Das erfolgt durch eine Auftrennung in die neuen Environment Variablen ORACLE_BASE_HOME und ORACLE_BASE_CONFIG.
Was sind die Vorteile eines Read-Only Oracle Homes?
- Einfacheres Patching und Upgrading der Oracle Datenbanken bei verkürzten Downtimes - es müssen die CONFIG Files nicht manuell mitgenommen werden!
- Patching erfolgt durch Austausch des Read-Only Images, das dann für viele/alle Server nur einmal gebaut werden muss.
- Einfacheres Provisionieren von neuen Installationen: Es müssen nur die Konfigurationsdateien angelegt werden.
Wie funktioniert das jetzt?
Alle Konfigurations- und Logfiles liegen nicht mehr unter ORACLE_HOME sondern unter ORACLE_BASE_HOME.
Im Falle eines Read/Write ORACLE_HOMEs zeigt ORACLE_BASE_HOME eben auf ORACLE_HOME.
Wenn das ORACLE_HOME aber Read-Only ist, dann zeigt ORACLE_BASE_HOME auf $ORACLE_BASE/homes/HOME_NAME. Darin befinden sich die Verzeichnisse network/admin, network/log, etc.
Beispiel für ORACLE_BASE_HOME im Read-Only Oracle Home
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18.0.0/dbhome_1
cd $ORACLE_HOME/bin
./orabasehome
/u01/app/oracle/homes/OraDB18Home1
Was ist jetzt noch mit ORACLE_BASE_CONFIG?
ORACLE_BASE_CONFIG zeigt auf das übergeordnete Verzeichnis des Verzeichnisses dbs - und somit die Konfigurationsfiles wie init.ora, spfile, orapwd,... liegen.
Im Fall eines Read/Write ORACLE_HOMEs zeigt es natürlich ebenfalls auf ORACLE_HOME.
Wird jedoch Read-Only ORACLE_HOME eingesetzt, zeigt ORACLE_BASE_CONFIG auf ORACLE_BASE!
Beispiel für ORACLE_BASE_CONFIG im Read-Only Oracle Home
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18.0.0/dbhome_1
cd $ORACLE_HOME/bin
./orabaseconfig
/u01/app/oracle
Wie wird das ganze konfiguriert?
Dazu hat Oracle die Datei orabasetab eingeführt. Darin werden die einzelnen Pfade festgelegt.
orabasetab liegt in $ORACLE_HOME/install/orabasetab und bestimmt unter anderem, ob ORACLE_HOME als Read-Only zu betrachten ist oder nicht.
Aufbau der orabasetab
- Feld 1: enthält $ORACLE_HOME
- Feld 2: enthält $ORACLE_BASE für das aktuelle $ORACLE_HOME
- Feld 3: enthält den HOME_NAME für das ORACLE_HOME und wird benutzt um ORACLE_BASE_HOME zu definieren
- Feld 4: enthält "Y" oder "N". Wobei "Y" = Read-Only und "N" = Read/Write Oracle Home
Beispiel Inhalt von orabasetab
cd $ORACLE_HOME/install
cat orabasetab
/u01/app/oracle/product/18.0.0/dbhome_1:/u01/app/oracle:OraDB18Home1:Y:
Durch das "Y" wir das Oracle Home als Read Only ausgewiesen, worauf Oracle folgende Konfiguration nutzt:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/18.0.0/dbhome_1
ORACLE_BASE_HOME=/u01/app/oracle/homes/OraDB18Home1
ORACLE_BASE_CONFIG=/u01/app/oracle
Read-Only Oracle Home einschalten
Zuerst wird eine "Software Only" Installation durchgeführt und danach mittels des Aufrufs roohctl -enable auf Read-Only gestellt. Hier die nötigen Schritte unter der Voraussetzung, dass der Oracle Benutzer schon angelegt ist und die Oracle Software unter /tmp/ora18c.zip liegt.
mkdir -p /u01/app/oracle/product/18.0.0/dbhome_1
chown oracle:oinstall /u01/app/oracle/product/18.0.0/dbhome_1
cd /u01/app/oracle/product/18.0.0/dbhome_1
unzip -q /tmp/ora18c.zip
## Software Only Installation auswaehlen
./runInstaller
## Optional: hier können mittels OPatch benötigte Patches eingespielt werden - in diesem Beispiel nicht enthalten.
cd bin
./roohctl -enable
roohctl legt unter anderem die Datei $ORACLE_HOME/install/orabasetab an.
Ab diesem Zeitpunkt kann wie gewohnt mit netca bzw. dbca die weitere Konfiguration durchführen.
Optionale Schritte - Demo Verzeichnisse
Wenn die Oracle Demos bei einem "Read-Only" Oracle Home genutzt werden sollen, müssen diese unter ORACLE_BASE_HOME bereitgestellt werden. Dazu müssen sie von $ORACLE_HOME/*/demo auf $ORACLE_BASE_HOME/*/demo kopiert werden. Damit niemand versehentlich im Read-Only Oracle Home die Demo Files modifiziert, sollten am besten symbolische Links eingerichtet werden.
Liste der Demo Verzeichnisse in Oracle 18c
- jdbc/demo
- odbc/demo
- ord/http/demo
- precomp/demo
- rdbms/demo
- sqlj/demo
- sqlplus/demo
- xdk/demo
Kopieren von rdbms/demo
cd $ORACLE_HOME
export ORACLE_BASE_HOME=`bin/orabasehome`
mkdir -p $ORACLE_BASE_HOME/rdbms
cp -r rdbms/demo $ORACLE_BASE_HOME/rdbms/demo
## Symbolic Links erzeugen cd rdbms
mv demo demo.installed
ln -s $ORACLE_BASE_HOME/rdbms/demo $ORACLE_HOME/rdbms/demo
Jetzt können dem Demos problemlos eingesetzt werden.