Wenn man mit dem Oracle dbca (Database Configuration Assistant) eine Datenbank erstellt, werden im Schritt 3 zwei Templates (Data Warehouse und General Purpose or Transaction Processing) angeboten. Bei beiden ist Include datafiles gesetzt. Wählt man eine dieser beiden Prototypen aus, ist die Erstellung der Datenbank ein Kinderspiel und in ca. 5 Minuten hat man eine fertige Datenbank.
Warum nicht?
Zunächst einmal stellt sich die Frage (zumindest mir), worin unterscheiden sich die beiden Prototypen?
Dafür sehen wir uns einmal die Dateien im Verzeichnis $ORACLE_HOME/assistants/dbca/templates
genauer an:
-rw-r-----. 1 oracle oinstall 10772 Apr 5 2019 New_Database.dbt
-rw-r-----. 1 oracle oinstall 86548480 Apr 17 2019 pdbseed.dfb
-rw-r-----. 1 oracle oinstall 274554880 Apr 17 2019 Seed_Database.dfb
-rw-r-----. 1 oracle oinstall 18726912 Apr 17 2019 Seed_Database.ctl
-rw-r-----. 1 oracle oinstall 4888 Apr 17 2019 Data_Warehouse.dbc
-rw-r-----. 1 oracle oinstall 4768 Apr 17 2019 General_Purpose.dbc
-rw-r-----. 1 oracle oinstall 6611 Apr 17 2019 pdbseed.xml
Es gibt zwei dbc
Dateien, die eine gewisse Ähnlichkeit zu den Auswahlmöglichkeiten im dbca aufweisen. Dabei handelt es sich um XML-Strukturen, die die Struktur und Informationen zu den Datendateien enthalten.
Des Weiteren befinden sich zwei Dateien mit der Endung dfb
in dem Verzeichnis. Dabei geht es nicht um den Deutschen Fußball Bund sondern um ein komprimiertes RMAN Backup der Datafiles. D.h. es gibt das Backup der Datafiles der CDB sowie das Backup der Datafiles der PDB$SEED. Für die PDB$SEED gibt es dann noch ein Manifest (pdbseed.xml
), um die PDB in die CDB einzuhängen. Den Abschluss bildet das Backup der Controfiles (Seed_Database.ctl
). Der Name Seed_Database hat hierbei übrigens nichts mit der PDB$SEED zu tun, sondern kennzeichnet den Namen des Templates. Die noch verbliebene Datei New_Database.dbt
hat mit den besprochenen Templates zunächst nichts zu tun, sondern gehört zur Custom Database.
Was fällt auf?
Es gibt für zwei Datenbank-Templates nur einen Satz an Datafiles. D.h. die Datenbanken Data Warehouse und General Purpose unterscheiden sich nur in einem (!) einzigen Parameter: Beim Data Warehouse Template ist star_transformation_enabled=TRUE
gesetzt. Okay, bei Sample Schema ist noch der Tablespace EXAMPLE
angegeben, aber der hat keine Relevanz, weil die Option auf FALSE steht.
Das bedeutet praktisch, dass es überhaupt keinen Unterschied zwischen den beiden Templates gibt. Den Parameter kann man später immer noch setzen. Dafür braucht man nicht einmal die Datenbank neu zu starten.
Sollte man dieses Template verwenden?
NEIN!
Warum nicht?
Weil in dem Template sämtliche Optionen inklusive der geliebten OJVM enthalten sind. Sie haben nur die Möglichkeit, Optionen, die Sie nicht wollen oder nicht lizenziert haben, später zu deinstallieren. Daher ist es sinnvoller, den umständlicheren Weg über die Custom Database zu gehen und dann die Optionen und Konfigurationen auszuwählen, die man wirklich benötigt.
Bei einer einmaligen Erstellung einer Datenbank, wie es im Produktionsumfeld vorkommt, ist es meist unerheblich, ob man dafür eine Stunde oder 5 Minuten benötigt.
Aber was macht man bei Testumgebungen, wo man ggf. schnell mal eine neue Datenbank braucht? Und was ist mit den Unternehmensstandards? Wäre es nicht sinnvoll, diese direkt mit zu generieren?
Hier bieten sich eigene Templates an.
Zunächst wird eine Datenbank angelegt (natürlich über die Custom Database) und dann alle notwendigen Schritte durchgeführt, bis die Datenbank den eigenen Anforderungen genügt. Dazu gehört die Erstellung von eigene Rollen, Usern und Profiles. Und natürlich verwenden Sie die Rollen DBA, RESOURCE und CONNECT genau so wenig wie das DEFAULT Profile!?
Dann ruft man den dbca aus und geht auf den Punkt Manage Templates.
Es ist an dieser Stelle unerheblich ob man eine Konvertierung in Oracle Managed Files (OMF) macht oder nicht. Bei der späteren Erstellung der Datenbank hat man immer noch die Wahl.
Meine Erfahrung hat gezeigt, dass es nicht hilfreich ist, ein PDB Template mit anzulegen, daher werden keine Anwendungen oder Anwendungsdaten gespeichert. Der Grund ist, dass die Erstellung einer PDB mit CREATE PLUGGABLE DATABASE
nur wenige Sekunden dauert.
Eine Anmerkungen noch
Der Speicherort für das Templates sollte möglichst auf einem Share / NFS Verzeichnis erfolgen. Damit kann man dann mit einem einzigen Template arbeiten und muss nicht aufwändig kopieren. Allerdings Vorsicht: die Lage der Dateien wird als Parameter LOCAL
in der Datei <Templatename>.dbc
gespeichert. Wenn man also nachträglich den Pfad ändern möchte, muss man hier den Pfad ebenfalls anpassen.
Ansonsten heißt es in Zukunft: Erstelle mir eine CDB, wie sie unseren Richtlinien entspricht in 5 Minuten – kein Problem.