Read Only Oracle Homes
Seit jeher liegen Konfigurationsdateien wie tnsnames.ora, sqlnet.ora oder das Serverparameterfile (SPfile) innerhalb des Oracle Homes, ist also gemeinsam mit der eigentlichen Software gespeichert. Wer sich daran schon immer gestört hat und eine Trennung von Software und Konfiguration erreichen wollte, musste mit symbolischen Links, Umgebungsvariablen wie TNS_ADMIN oder der IFILE-Syntax arbeiten. Ab Oracle Datenbank Version 18 ist das Geschichte. Denn da wurde das neue Feature der Read Only Oracle Homes eingeführt.
Dieses Feature ermöglicht es auf eine einfache Art und Weise die Software von den dynamischen Komponenten zu trennen. Zur Handhabung hat das vorhandene "orabase" noch drei neue Mitstreiter bekommen:
- orabaseconfig - ermittelt das Basisverzeichnis, unter dem die Konfigurationen abgelegt werden
- orabasehome - ermittelt das aktuell eingestellte Verzeichnis, unter dem die aktuelle Konfiguration abgelegt ist
- roohctl - Werkzeug, um ein Read Only Oracle Home einzurichen oder wieder zurückzustellen
Im Normalfall, also ohne konfiguriertes Read Only Oracle Home, liefern beide Kommandos ORACLE_BASE als Ergebnis:
[oracle@vm121 ~]$ orabasehome
/u01/app/grid/18
[oracle@vm121 ~]$ orabaseconfig
/u01/app/grid/18
Wie kann nun ein Oracle Home auf Read Only gestellt werden? Das geschieht mit "roohctl":
[oracle@vm121 ~]$ roohctl -help
Usage: roohctl [<flag>] [<command> <option>]
Following are the possible flags:
-help
Following are the possible commands:
-enable Schreibgeschütztes Oracle Home aktivieren
[-nodeList Liste der Knoten in einer Clusterumgebung]
[oracle@vm121 ~]$ roohctl -enable
Schreibgeschütztes Oracle Home wird aktiviert.
Cannot enable Read-Only Oracle home in a configured Oracle home.
The Oracle Home is configured with listeners 'LISTENER'.
Und schon sieht man auch, dass das gar nicht so einfach geht, wie vermutet. Das Oracle Home ist ein Restart Home mit einem laufenden Listener. Der muss vorher entfernt werden.
[oracle@vm121 ~]$ srvctl stop listener
[oracle@vm121 ~]$ srvctl remove listener
Beim zweiten Versuch klappt die Aktivierung nun:
[oracle@vm121 ~]$ roohctl -enable $ roohctl -enable
Schreibgeschütztes Oracle Home wird aktiviert. Enabling Read-Only Oracle home.
Datei orabasetab aktualisieren, um schreibgeschütztes Oracle Home zu aktivieren. Update orabasetab file to enable Read-Only Oracle home.
Die Datei orabasetab wurde erfolgreich aktualisiert. Orabasetab file has been updated successfully.
Bootstrap-Verzeichnisse für schreibgeschütztes Oracle Home erstellen. Bootstrap files have been processed successfully.
Die Bootstrap-Verzeichnisse wurden erfolgreich erstellt. Read-Only Oracle home has been enabled successfully.
Bootstrap-Dateien wurden erfolgreich verarbeitet. Check the log file /refresh/home/oracle/cfgtoollogs/roohctl/roohctl-180611AM052009.log
Schreibgeschütztes Oracle Home wurde erfolgreich aktiviert.
Prüfen Sie die Logdatei /u01/app/oracle/cfgtoollogs/roohctl/roohctl-200120AM081951.log.
Nach der Aktivierung liefern die beiden neuen Tools entsprechend andere Ergebnisse:
[oracle@vm121 ~]$ orabaseconfig
/u01/app/oracle
[oracle@vm121 ~]$ orabasehome
/u01/app/oracle/homes/OraGI18Home1
Jetzt muss nur noch der Listener wieder angelegt und gestartet werden, dann ist der Zustand wieder wie zuvor.
[oracle@vm121 ~]$ srvctl add listener
[oracle@vm121 ~]$ srvctl start listener
Nun existiert folgende Verzeichnisstruktur:
[oracle@vm121 ~]$ tree -a /u01/app/oracle/homes/OraGI18Home1/
/u01/app/oracle/homes/OraGI18Home1/
├── assistants
│ └── dbca
│ └── templates
├── dbs
├── install
├── log
│ └── vm121
│ └── client
├── network
│ ├── admin
│ │ └── listener.ora
│ ├── log
│ └── trace
└── rdbms
├── audit
└── log
Nach einiger Zeit des Arbeitens entstehen entsprechend weitere Dateien in diesem Pfad. Anhand dessen erkennt man recht genau, was es bedeutet, ein Read Only Oracle Home zu haben.
[oracle@vm121 ~]$ tree -a /u01/app/oracle/homes/OraGI18Home1/
/u01/app/oracle/homes/OraGI18Home1/
├── assistants
│ └── dbca
│ └── templates
├── cfgtoollogs
│ ├── opatchauto
│ │ ├── core
│ │ │ ├── opatch
│ │ │ │ ├── opatch2020-01-20_09-53-19AM_1.log
│ │ │ │ ├── opatch2020-01-20_09-59-52AM_1.log
│ │ │ │ ├── opatch_history.txt
│ │ │ │ └── SDKWork.txt
│ │ │ └── .patch_storage
│ │ ├── opatchauto2020-01-20_09-46-32AM.log
│ │ ├── opatchauto_2020-01-20_09-52-05_binary.log
│ │ └── opatchauto_2020-01-20_09-59-45_binary.log
│ ├── opatchautodb
│ │ ├── 2020-01-20-09-48-21
│ │ │ ├── log.txt
│ │ │ ├── log.txt.lck
│ │ │ ├── machine-readable
│ │ │ └── .tmp
│ │ ├── bootstrap2020-01-20_09-29-37AM.log
│ │ ├── hostlist.obj
│ │ └── systemconfig2020-01-20_09-36-27AM.log
│ └── oplan
├── dbs
├── install
├── log
│ └── vm121
│ └── client
│ ├── tnslsnr_10410.log
│ └── tnslsnr_9216.log
├── network
│ ├── admin
│ │ └── listener.ora
│ ├── log
│ └── trace
└── rdbms
├── audit
└── log
Ein Read Only Oracle Home macht durchaus Sinn. Aber wie zu sehen war, sollte man die Einrichtung direkt von Beginn an vornehmen um nicht später in den Betrieb eingreifen zu müssen. Allerdings muss man auch im Hinterkopf behalten, dass sich das "Read Only" lediglich auf die Konfiguration bezieht. Das Einspielen von One-Off-Patches oder Release Updates oder ähnlichem verändert das Oracle Home sehr wohl. Nichtsdestotrotz stellt das Feature eine schöne Möglichkeit dar, um die Infrastruktur etwas einfacher und übersichtlicher zu gestalten.
Kommentare
Keine Kommentare