Home > Oracle 18c Datenbank > Read Only Oracle Homes

Read Only Oracle Homes

Read-Only Oracle Homes

Beginnen mit Oracle 18c kann man die Oracle Homes "Read Only" betreiben. Da immer noch einige wichtige Konfigurationsfiles innerhalb des ORACLE_HOMEs liegen, müssen diese nun abgesiedelt werden. Dies erfolgt durch eine Auftrennung in ORACLE_BASE_HOME und ORACLE_BASE_CONFIG.

Was sind die Vorteile von Read-Only Oracle Homes?

  • Einfacheres Patching und Upgrading von Oracle Datenbanken bei verkürzten Downtimes - man muss die CONFIG Files nicht manuell mitnehmen!
  • Patching erfolgt durch Austausch des Read-Only Images, welches dann für viele/alle Server nur einmal gebaut werden muss.
  • Einfacheres Provisionieren von neuen Installationen. Man muss ich nur um das einspielen/erzeugen der Konfigfiles kümmern.

Wie funktioniert das mit dem "Read Only" Oracle Home?

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. In diesem findest man beispielsweise 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

Wozu braucht man jetzt noch ORACLE_BASE_CONFIG?

ORACLE_BASE_CONFIG zeigt das Verzeichnis in dem das "dbs" Verzeichnis - 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.

Wenn man jedoch "Read Only" ORACLE_HOMEs einsetzt, 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 konfiguriert man das ganze?

Dazu hat Oracle die orabasetab eingeführt. In dieser werden die einzelnen Pfade festgelegt.

Das File orabasetab liegt in $ORACLE_HOME/install/orabasetab und definiert unter anderem ob das 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 oracasetab

cd $ORACLE_HOME/install
cat orabasetab

/u01/app/oracle/product/18.0.0/dbhome_1:/u01/app/oracle:OraDB18Home1:Y:

Durch das "Y" weisen wir das Oracle Home als Read Only aus, 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 führt man eine "Software Only" Installation durch und schaltet danach mittels "roohctl -enable" auf Read Only. 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: kann man hier mittels OPatch benötigte Patches einspielen - in diesem Beispiel nicht enthalten.

cd bin
./roohctl -enable

roohctl legt unter anderem die $ORACLE_HOME/install/orabasetab an.

Ab diesem Zeitpunkt kann man wie gewohnt mit dem NETCA bzw. DBCA die weitere Konfiguration durchführen.

Optionale Schritte - Demo Verzeichnisse

Wenn Sie die Oracle Demo´s bei einem "Read Only" Oracle Home nutzen möchten, müssen Sie diese unter ORACLE_BASE_HOME bereit stellen.

Müssen Sie diese von $ORACLE_HOME/*/demo auf $ORACLE_BASE_HOME/*/demo kopieren. Damit niemand versehentlich im "Read Only" Oracle Home die Demo Files modifizieren möchte, müssen symbloische 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 kann man mit dem Demos problemlos arbeiten.