„Read-Only-Oracle-Home“ ist ein oftmals noch unbekanntes und selten genutztes Feature, das Oracle mit der Version 18c der Datenbank eingeführt hat. Was macht dieses Feature und welche Vorteile bringt es mit sich?
Was ist "Read-Only-Oracle-Home"?
"Read-Only-Oracle-Home" (im Folgenden kurz „ROOH“) ist ein Feature mit einem irreführenden Namen. Denn es bedeutet nicht, dass in das Installationsverzeichnis der Oracle-RDBMS-Software, das $ORACLE_HOME, nicht mehr geschrieben werden kann. Es bedeutet vielmehr, dass es ein "Software-Only-Oracle-Home" ist und dass Konfigurationsdateien wie spfile, Password-File und z. B. auch die Oracle Net-Konfiguration an anderer Stelle abgelegt werden. Dieser neue Ablageort sind zwei Unterverzeichnisse im $ORACLE_BASE-Verzeichnis, nämlich $ORACLE_BASE/dbs und $ORACLE_BASE/homes. Durch diese Trennung von Software und Konfigurationsdateien werden Software-Upgrades und -Patches vereinfacht.
Das Feature ist seit Oracle 18c verfügbar und seit Oracle 21c die Standard-Einstellung. Es kann aber in Oracle 21c noch deaktiviert werden.
Wie kann man "Read-Only-Oracle-Home" aktivieren?
Für die Aktivierung von ROOH gibt es das Tool „roohctl“:
Wenn man ROOH aktivieren will, dann darf aus diesem Oracle-Home weder eine Datenbank-Instanz noch ein Listener aktiv sein. Es ist also empfehlenswert, die Aktivierung direkt nach der Installation vorzunehmen.
Beispiel:
Die Deaktivierung von ROOH mittels „roohctl -disable“ ist möglich, aber nicht mehr dokumentiert.
Wie kann man nun feststellen, ob ROOH aktiviert ist? Dazu gibt es die Datei $ORACLE_HOME/install/orabasetab
Diese Datei enthält – durch Doppelpunkte getrennt – die folgenden Informationen:
- Pfad zum Oracle Home
- Pfad zum Oracle Base
- Ist Read-Only-Oracle-Home aktiviert? (Y/N)
Ist ROOH allerdings aktiviert, dann hat dieser Befehl ein anderes Ergebnis:
„orabaseconfig“ zeigt an, wo die Konfigurationsdateien der Datenbank-Instanzen liegen:
Wenn ROOH nicht aktiv ist, dann gibt dieser Befehl den Oracle-Home-Pfad aus. Die Konfigurationsdateien liegen jeweils im Unterverzeichnis dbs.
Wo liegen bei Read-Only-Oracle-Home die Konfigurationsdateien?
Die obigen Ausgaben zeigen, wo jetzt die Konfigurationsdateien liegen: in Unterverzeichnissen des $ORACLE_BASE-Verzeichnisses. Dort gibt es zwei neue Unterverzeichnisse:
- dbs
- homes
Im Unterverzeichnis dbs liegen – versions- und ORACLE_HOME-unabhängig - die Konfigurationsdateien der Datenbank-Instanzen, also spfile und Passwordfile.
Im Unterverzeichnis homes gibt es für jede Software-Installation ein Unterverzeichnis. Der Name des Verzeichnisses entspricht dabei dem Namen der Software-Installation im Inventory.
Innerhalb dieser Verzeichnisse existiert die folgende Unterstruktur:
Anhand der Verzeichnisnamen sieht man, welche Daten dort abgelegt werden:
1. dbca/templates – Vorlagen des Database Configuration Assistants
2. cfgtoollogs/sqlpatch bzw. sqlpatch – Protokolle von datapatch über das Einspielen von Änderungen in die Datenbanken. In Oracle 19c werden diese Informationen noch im $ORACLE_HOME/sqlpatch-Verzeichnis abgelegt, auch wenn das ORACLE_HOME als ROOH konfiguriert ist.
3. dbs – ein leeres Verzeichnis
4. drdaas/admin, hs/admin und mgw/admin – Konfigurationsdateien für Oracle-Gateways. Auch diese Dateien sind in Oracle 19c noch im $ORACLE_HOME-Verzeichnisbaum abgelegt.
5. network/* – Konfigurations-, Log- und Trace-Dateien für Oracle Net. Allerdings sollten die Konfigurationsdateien (tnsnames.ora, listener.ora, sqlnet.ora etc.) nicht hier abgelegt werden, sondern in einem separaten Verzeichnis (Umgebungsvariable $TNS_ADMIN).
6. rdbms – Dieses Unterverzeichnis wird initial von Oracle für Log- und Audit-Dateien genutzt, bevor diese Informationen in die jeweils konfigurierten Verzeichnisse geschrieben werden.
Und was bringt mir das?
Read-Only-Oracle-Home führt zur Trennung zwischen der eigentlichen Software-Installation und den Konfigurationsdateien für diese Software. Bei anderen Software-Produkten ist das schon länger üblich. Bei der Oracle-Datenbank hat man früher oft mit symbolischen Links gearbeitet, die aus dem jeweiligen ORACLE_HOME-Verzeichnis heraus auf die eigentlichen Konfigurationsdateien gezeigt haben. ROOH erleichtert das Upgrade der Oracle-Software, denn das Kopieren der Konfigurationsdateien in das neue ORACLE_HOME entfällt. Weiterhin erleichtert ROOH ebenfalls das Patchen der Software, denn auch beim inzwischen bevorzugten Out-of-Place-Patching entfällt das Kopieren der Konfigurationsdateien.
Wir empfehlen daher, dieses Feature bei jeder Oracle-Installation zu aktivieren – und das nicht nur, weil es inzwischen der Standard ist, sondern weil es viele Vorteile bietet.