Skip to Main Content

Breadcrumb

Read-Only Oracle Homes

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.