Oracle Multitenant

Werbung
Oracle Multitenant
Verwaltung von Pluggable Databases –
Handling und Besonderheiten
Ralf Lange
Oracle Deutschland B.V. & Co KG
Besonderheiten und Eigenschaften von
Oracle Multitenant
Dateien in der CDB
Namespaces
 Jede PDB hat einen eigenen Satz
Tablespaces, inkl. SYSTEM und SYSAUX
 PDBs teilen sich UNDO, REDO
und control files, (s)pfile
 Als Default hat die CDB einen einzelnen
TEMP Tablespace, PDBs können aber
ihren eigenen anlegen
Benutzer (DB User)  Lokale Nutzer (“local user”) entsprechen
selbst erstellen Nutzern in einer non-CDB
 …sind nur in einer PDB definiert
 …können eine PDB administrieren
 Ein “common user” ist im “root” definiert
und wird in jeder PDB repräsentiert
 Ein “common user” kann sich an jede
PDB anmelden, in der er “Create
Session”-Privileg hat und kann diese
auch administrieren
 Oracle-eigene Systemobjekte gehören
“common users”
Common Users und Privilegien
Authorisierung wird genauso geprüft wie vor 12.1
 Einem “common user” können Privilegien lokal für eine PDB (oder
“root”) zugewiesen werden und daher in jedem Container
unterschiedlich sein
 Alternativ können einem “common user” System Privilegien auch
allgemein (“commonly”) zugewiesen werden – der Grant gilt dann im
root und jeder PDB (ggf. auch in zukünftigen)
 Es können “common roles” erstellt werden
 Eine “common role” kann einem “common user” allgemein
(“commonly”) zugewiesen werden
 Autorisierung erfolgt ausschließlich mit den Rechten die der User in
dem Container hat, im dem er das SQL ausführen will
Sicherheitsaspekte bei Multitenant
Einige zusätzliche Überlegungen…
 Der CDB-Admin ist sehr mächtig und hat eine zentrale Rolle
– Er „sieht alles“ und „darf alles“ in allen PDBs – auch in importierten
– Vorsicht daher beim „plug“ einer PDB in eine neue CDB mit
anderem Admin / anderen Sicherheitseinstellungen
 Verschlüsselung genutzt?
– Master Key wird im Keystore auf CDB-Ebene verwaltet…
– …muss bei Unplug/Plug entsprechend exportiert/importiert werden
Nutzung einer PDB als User
 Grundsätzlich: Anmeldung an einer PDB nur über entspr. Service
 Connect OHNE Service meint implizit immer die CDB!
 Innerhalb einer Session möglich: ‘alter session set container=…’
 Daraus folgt:
– Skripte etc. anpassen!
– Achtung besonders bei Administrationstätigkeiten:
“Connect / as sysdba” gilt ebenfalls für CDB und nicht für eine PDB
 Mitgeliefertes Skript “catcon.pl” (in …/rdbms/admin ) bietet
“Wrapper”-Funktionalität zur Ausführung von Skripten gegen PDBs
– …auch für mehrere PDBs (“Batchbetrieb”)
– ggf. auch parallel
– Mehr dazu: https://blogs.oracle.com/dbacommunity_deutsch/entry/12c_pluggable_database_sql_skripte
Unplug / Plug
Einfach aus der alten CDB “ausklinken”…
Unplug / Plug
…und in die neue CDB “einklinken”…
 Verschieben zwischen CDBs erfordert
lediglich das Verschieben der Metadaten
der PDB
 Upgrades und Patching werden dadurch
einfacher
 Eine “ausgeklinkte” PDB beinhaltet Infos
zu lineage, opatch, encryption keys etc.
Unplug / Plug
Beispiel
Unplug
alter pluggable database HCM
unplug into '/u01/app/oracle/oradata/…/hcm.xml'
Plug
create pluggable database My_PDB
using '/u01/app/oracle/oradata/…/hcm.xml'
Demo: Umgang mit Pluggable Databases
Trigger für CDBs / PDBs
Sinnvoll für Automatisierung / Batchbetrieb
 Beim Start einer CDB alle darin enthaltenen PDBs automatisch starten:
– → „AFTER STARTUP“ Trigger in der CDB anlegen mit
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
 “AFTER CLONE on pluggable database” Trigger in der PDB zündet
in “frischem Klon”:
– Z.B. zum Tabellen anlegen / Stammdaten erzeugen/laden…
– Wird nach Ausführung gelöscht!
 “AFTER UNPLUG on pluggable database” Trigger in der PDB:
– Z.B. für “Aufräumarbeiten”
– Wird nach Ausführung gelöscht!
“pro PDB” vs “pro CDB”
Feingranulare Kontrolle wo angemessen –
trotz gemeinsamer CDB-Operationen
Pro CDB
Pro PDB
Eine Oracle Software Version
RMAN point-in-time recovery
Data Guard
“Ad hoc” RMAN Backups
Geplante RMAN Backups
Möglichkeit für “…flush shared_pool”
Einige Eigenschaften/Parameter,
z.B. einheitl. Character Set
Parameter für die gilt
Redo und Undo
IsPDB_Modifiable = 'TRUE'
Ressourcenverwaltung
für Pluggable Databases
Verwalten von geteilten Ressourcen
Resource Management in einer Multitenant Umgebung
Niedrige Priorität
Mittlere Priorität
Hohe Priorität
Verteilen von Ressourcen zwischen PDBs
 Grundsätzlich: PDBs konkurrieren um gemeinsame Ressourcen
 Mit dem Resource Manager stellt man daher pro PDB ein:
– CPU
– Exadata I/O
– Sessions
– Anzahl der “Parallel Execution Servers”
 Konfigurierte Policies regeln, wie Ressourcen benutzt werden:
– …über eine Default Konfiguration die auch bei Hinzufügen/Entfernen
von PDBs funktioniert
– …über harte Limits (“you get what you pay for”)
Verteilen von Ressourcen zwischen PDBs
 Das zugrundelegende Standardmodell basiert auf folgenden Annahmen:
– Eine Anzahl “Shares” wird jeder PDB zugewiesen
(Default: 1 Share pro PDB)
– Die Summe der Shares ist beliebig
– Die Summe der Shares entspricht der Gesamtleistung
– Zusätzlich: Ein optionales “Cap” (d.h. ein maximales Nutzungslimit)
kann jeder PDB zugewiesen werden (Default: Kein Cap, d.h. max
100%)
Zuteilen von CPU-Leistung
Ein “CDB Resource Plan”
nutzt “Shares” zur Verteilung
von CPU-Leistung für PDBs
2 Shares
1 Share
1 Share
Pluggable Database
Shares
Garantierte CPU-Leistung
Maximale CPU-Leistung
HCM
2
2/4 = 50%
100%
CRM
1
1/4 = 25%
100%
ERP
1
1/4 = 25%
100%
Herunterladen