Erzeugen und Verwalten von Pluggable Databases für Fachabteilungen und Poweruser
von Manuel Hoßfeld, Oracle Deutschland B.V. & Co. KG |
|
Mit Oracle Multitenant ist es seit Version 12c der Oracle Datenbank möglich, über sogenannte Pluggable Databases (PDBs) logisch voneinander getrennte Datenbanken in einer gemeinsamen Container-Datenbank (CDB) zu betreiben.
Hervorgehoben werden bei Oracle Multitenant oft die Vorteile bei der Ressourcen-Nutzung und -Konsolidierung auf Datenbank Servern. Doch Multitenant ermöglicht auch, z.B. Anwendern in Fachabteilungen "eigene Datenbanken" zu geben, in denen sie nach dem "Sandbox Prinzip" frei arbeiten können. Praktischerweise lässt sich diese Vorgehensweise mit Multitenant einrichten, ohne dass die zentrale Datenbankadministration tatsächlich physisch (oder per VM) getrennte Datenbanksysteme für die Fachabteilungen vorhalten müsste.
Doch wie genau erzielt man diese Trennung für Nutzer dieser PDBs, und wodurch wird sichergestellt, dass deren Administratoren nicht auch gleichzeitig Zugriff bekommen auf andere PDBs oder sogar die globale CDB, in der sie laufen?
Hinweis: In diesem Artikel geht es primär um die grundlegenden Verwaltungs- und Nutzerkonzepte von Oracle Multitenant. Für eine sinnvolle Isolation ist meist auch eine Ressourcenverwaltung bzw. -trennung zwischen PDBS mittels des Oracle Resource Managers nötig, der hier aus Gründen der Übersicht nicht behandelt wird. Weiterführende Informationen zum Oracle Database Resource Manager und anderen Aspekten von Oracle Multitenant finden Sie in den Links am Ende des Artikels.
Grundlagen der Rechteverwaltung in Pluggable Databases
Grundsätzlich kennt eine Oracle 12c CDB sowohl globale Nutzer ("Common Users") als auch lokale Nutzer ("Local Users"):
- Ein Common User
gilt im Kontext der gesamten CDB und kann sich prinzipiell (sofern seine konkreten Rechte dies erlauben) in allen darin befindlichen PDBs bewegen.
- Ein Local User hingegen gilt nur im Kontext einer PDB und interagiert auch nur mit dieser.
Im Gegensatz zu globalen Nutzern die pro CDB nur einmal vorkommen können, kann es durchaus den gleichen Nutzer(namen) in verschiedenen PDBs geben.
Für Rollen gilt sinngemäß das Gleiche: Es gibt also lokale und globale Rollen, d.h. "Local Roles" und "Global Roles".
Die äußerliche Unterscheidung zwischen den beiden Typen von Rollen und Nutzern erfolgt prinzipiell durch die Vergabe
des Präfix "C##". Ein Beispiel für einen globalen Nutzernamen wäre also "C##ALLGEMEIN". Lokale Nutzer hingegen haben kein solches Präfix. Eine Ausnahme dieser Regel stellen vordefinierte, systemeigene Nutzer wie SYS und SYSTEM dar. Diese sind globale Nutzer, obwohl sie kein "C##" vor dem Namen stehen haben.
Die gerade genannte Sonderregel impliziert auch, dass man bei der Administration von einzelnen PDBs tunlichst
nicht mit SYS oder SYSTEM arbeiten sollte, da diese als Common User immer auch Zugriff auf die komplette CDB mit allen PDBs haben.
Im Umkehrschluss bedeutet dies, dass ein lokaler Admin-Nutzer für die Verwaltung einer einzelnen PDB genutzt werden sollte. Im einfachsten Fall - dem Erzeugen einer "leeren" PDB - wird dieser lokale Admin-Nutzer direkt mit dem CREATE Kommando angegeben:
Leider reicht dies aber noch nicht aus: Das Kommando erzeugt zwar einen lokalen Nutzer "meinadmin" für Administrationszwecke in der neuen PDB. Dieser hat jedoch zunächst noch keine Administrationsrechte. Genauer gesagt hat er außer dem Recht sich an die PDB anzumelden noch überhaupt gar keine Privilegien.
Will man dies ändern, führt der Weg dazu über die PDB_DBA Rolle. Diese Rolle wird den lokalen Admin-Nutzern bei "from seed" (also "leeren") erzeugten PDBs nämlich automatisch zugewiesen, ist per Default aber leer (abgesehen von den bereits erwähnten Privilegien für das grundlegende Verbinden zu PDBs.)
Ein Zuweisen zusätzlicher Privilegien über eigene oder bereits vom System bereitgestellte Rollen ist natürlich möglich.
Am besten ist es, diese Rollenzuweisung direkt beim Anlegen der PDB über das Schlüsselwort ROLES vorzunehmen. Leicht abgewandelt könnte das gerade genannte Statement also so aussehen
und würde den lokalen Admin auch gleich zum DBA in "seiner" PDB machen. Anstelle der recht breit angelegten "klassischen" DBA Rolle kann es in vielen Fällen sinnvoll sein, eine spezifischere, selbstangelegte Rolle zu verwenden.
In jedem Fall kann der hier erzeugte lokale Nutzer diese Rolle nur im Kontext der entsprechenden PDB ausüben, auch wenn es sich (wie im Falle von DBA) bei der zugewiesenen Rolle um eine globale Rolle handelt.
Erzeugen von PDBs und Admin-Usern mit grafischen Werkzeugen
Direktes Erzeugen von Hand im Enterprise Manager Database Express 12c
Als Beispiel für ein grafisches Werkzeug zum Erzeugen und Verwalten von PDBs sei an dieser Stelle kurz "Enterprise Manager Database Express" genannt, welches - sofern Sie es bei der Installation Ihrer Datenbank nicht aktiv abgewählt haben - automatisch mitinstalliert und komplett über den Browser bedient wird. Von der Homepage aus (in der Regel https://<name-Ihres-DB-Servers>:5500/em ) erreichen Sie die Verwaltungsfunktionen für Multitenant über einen Klick auf den Link "CDB (x PDBs)" - wobei x natürlich für die Anzahl der in Ihrer CDB vorhandenen PDBs steht.

Über der daraufhin erscheinenden "Containers" Ansicht gibt es in einer Button-Leiste gleich als erstes den Knopf "Create", welcher einen einfachen zweistufigen Wizard öffnet:

Nach Eingabe der generellen Parameter für PDB-Name und Admin-Nutzer haben Sie im zweiten Screen auch die Möglichkeit, nach Entfernen der entsprechenden Häkchen, vom Default abweichende Einstellungen zur Speicherverwaltung (d.h. zu Lage und etwaiger Größenbeschränkung des Tablespaces für die PDB) zu machen - diese durchaus sinnvollen Optionen wurden aus Gründen der Übersicht im obigen Kommandozeilen-Beispiel nicht behandelt. (Belassen Sie so wie hier im Bild die Defaults, werden die Datendateien für die PDB mittels Oracle-Managed Files im Standard-Speicherort abgelegt und die Tablespaces der PDB können prinzipiell beliebig groß werden.)

Hinweis: Im Gegensatz zum zweiten Kommandozeilen-Beispiel weiter oben ist es in diesem Wizard leider nicht möglich, direkt die gewünschte(n) Rolle(n) für den lokalen Administrationsnutzer anzugeben. Diese Rollenzuweisungen müssten Sie dann nachträglich vornehmen.
PDBs im Self-Service
Bequemer und effizienter für die zentrale Datenbankadministration ist es natürlich, wenn diese die notwendigen Schritte zum Anlegen von PDBs für Fachanwender und Poweruser gar nicht selbst vornimmt. Vor allem für Test- und Entwicklungszwecke ist es oft sinnvoll, die entsprechenden PDBs einfach im "Self-Service" von den jeweiligen Nutzern anfordern und dann auch automatisch erzeugen zu lassen. Eine solche "Self-Service Lösung" für PDBs - man kann auch von "Pluggable-Database-as-a-Service" sprechen - gibt es von Oracle in zwei verschiedenen Ausprägungen:
- Die "Pluggable Database Self-Service Provisioning Application" (PDBSSA) auf Basis von Oracle Application Express (APEX):
Diese recht schnell installierbare und kostenfreie Anwendung ermöglicht es darin registrierten Anwendern, eigenständig neue PDBs zu erzeugen oder bestehende zu klonen. Dabei können vom Administrator des Systems auch Quota (Anzahl PDBs und Storage-Menge) vergeben werden. Da die Anwendung direkt in der CDB läuft, kann sie auch nur diese eine CDB und deren PDBs verwalten; außerdem verfügt sie nur über ein recht simples zweistufiges Rechtekonzept. Dadurch ist sie besonders für kleinere Teams oder Umgebungen geeignet.
Bei der Erzeugung von PDBs vergibt die PDBSSA übrigens selbstständig DBA-Rechte an den beim Beantragen erzeugten User. Erfreulicherweise hat man mit einer nachträglichen Rechte bzw. Rollenzuweisung also nichts mehr zu tun. Allerdings gibt die Anwendung dem Administrator auch keinen Einfluss darauf, welche Privilegien konkret zugewiesen werden (z.B. um diese für eigene Zwecke einzuschränken.)

- Die "Database-as-a-Service" (DBaaS) Features in Oracle Enterprise Manager 12c Cloud Control gehen von der gleichen Grundidee aus wie die gerade vorgestelle PDBSSA: Zuvor registrierte Self-Service User können sich eigenständig PDBs erzeugen. Im Gegensatz zu dieser kann Enterprise Manager Cloud Control aber prinzipiell beliebig viele CDBs verwalten und verfügt auch über wesentlich umfangreichere Konfigurationsmöglichkeiten für den Self-Service. Den Fachanwendern oder Powerusern welche aus einer zuvor durch den Administrator festgelegten Auswahl von klar definierten Datenbankvorlagen ("Service Templates") wählen können, stehen anschließend auch grundlegende Administrationsmöglichkeiten im gleichen Self-Service-Portal zur Verfügung (z.B. Start/Shutdown, Monitoring des Laufzeitverhaltens etc.) - wohlbemerkt ohne dass diese Nutzer gleichzeitig auch Zugriff auf die "vollwertige" Enterprise Manager Umgebung hat, welche von der zentralen Datenbankadministration für die Verwaltung z.B. von Unternehmensdatenbanken genutzt wird.

Als Administrator kann man nicht nur festlegen, welche Arten von Datenbanken (z.B. leere oder bereits "befüllte" PDBs) von den Nutzern beantragt werden können und welche Quota diese haben, sondern man hat auch eine fein granulare Kontrolle über die Rechte, die einem PDB Administrator zugewiesen werden sollen. Der folgende Screenshot zeigt einen Ausschnitt der entsprechenden Konfigurationsseite:

Hinweis: Die gerade gezeigten Möglichkeiten von Enterprise Manager Cloud Control sind Bestandteil des separat zu lizenzierenden Cloud Management Pack for Oracle Databases.
Zusammenfassung
Wie dieser Artikel gezeigt hat, gibt es verschiedene Möglichkeiten, Pluggable Databases mit Oracle Multitenant zu erzeugen und zu verwalten - je nach Umfang der eigenen Umgebung und Anforderungen an die Kontrolle über die darin erzeugten PDBs und deren Admins.
Weitere Informationen über die Verwaltung von Pluggable Databases finden Sie zum einen in der Dokumentation, z.B. im "Part VI - Managing a Multitenant Environment" des Database Administrator's Guide.
Zum anderen ist in deutscher Sprache das "Oracle Dojo Nr. 7" zum Thema Multitenant erschienen.
Konkrete Informationen über die zuletzt beschrieben Möglichkeit des "Pluggable-Database-as-a-Service" finden sich im "Oracle Dojo Nr. 9 - Die Oracle-Datenbank-Cloud mit Oracle Cloud Control"
Beide Dojos können kostenfrei (als PDF oder in gedruckter Form) unter der Adresse http://tinyurl.com/dojoonline bezogen werden.
Zurück zum Anfang des Artikels
Zurück zur Community-Seite |