Oracle 12c Multitenant Option Konzepte und Einsatzgebiet von Container und Pluggable Databases DOAG Webinar Ilgar Machmudov Opitz Consulting Deutschland GmbH Kirchstr 6, 51647 Gummersbach 10.01.2014 Seite 1
Konzepte und Einsatzgebiet von Container und Pluggable Databases Standorte Unternehmensentwicklung Umsatz 2012: 36,7 Mill. 2013: 38,8 Mill. (Prognose) Mitarbeiter 2012: 382 Mitarbeiter 2013: 385 Mitarbeiter (Prognose) Peter Dix (CFO): Solides Wirtschaften in Verbindung mit einer langfristigen kundenorientierten Strategie garantiert den wirtschaftlichen Erfolg Seite 2
Wie wir aktiv sind Das Ecosystem Kunden Handel/ Logistik Non-Profit Telko/ Medien Markus Mehrens Head of Accountmanagement, Deutsche Postbank AG Referring to our external partners, I rarely experienced that project organisation and project management have been handled in such perfect manner. Industrie Strategische Beratung Marketing Planung Design Finanzdienstleister Realisierung Outtasking Technologie Andreas Röttger (COO): Ein ganzheitliches Lösungsangebot für komplexe und innovative IT- Lösungen ist nur durch den Mehrwert einer partnerschaftlichen Zusammenarbeit möglich. Non-Profit Methoden Partner Jürgen Kunz Senior Vice President Northern Europe & Managing Director Oracle Germany Unser Certified Advantage Partner OPITZ CONSULTING gehört auf Grund seiner qualifizierten Mitarbeiter und herausragenden Projekterfolge zu unseren privilegierten Partnern. Seite 3
Über mich Senior Consultant, Opitz Consulting Deutschland GmbH Arbeit mit Oracle und MS SQL Server seit 2001 Bei Opitz seit 2012 Schwerpunkte: Administration, Oracle und MS-SQL HA Lösungen Seite 4
Agenda Wesentliche Unterschiede von CDB / PDB zu alten Oracle Strukturen Bausteine und Hauptkomponente einer 12c Multitenant Architektur Neue Dictionary Informationen zu CDB / PDB Administration von Multitenant Feature Unplug / Plug und Cloning von PDB s Migrationsleitfaden von Non-CDB 11G zu 12c PDB Backup Möglichkeit und Restore Fähigkeit von CDB / PDB Lizensierung Aspekte Abkürzungen: CDB - Container Database PDB - Pluggable Database Non-CDB Standard Oracle 11g / 12c Datenbank Seite 5
Wesentliche Unterschiede Ab Oracle 12c unterscheidet man zwischen Oracle Standard Non-CDB und CDB CDB (Container Database) wird intern als CDB$ROOT (Root Container) bezeichnet CDB stellt SGA, Controlfiles, Redo Logs und Undo bereit Seed Database (PDB$SEED) Gibt s nur ein Mal pro CDB Dient als Vorlage beim erstellen von neue PDB PDB (Pluggable Database) Ist eine Applikation DB, die Ressourcen von CDB nutzt Besitzt aber eigene System, Sysaux und Temp Tablespace Non-CDB Eine Standard Oracle 12c Datenbank Seite 6
Wesentliche Unterschiede CDB unterstützt bei Oracle Version 12.1.0.1 bis zu 252 PDBs plus Seed Database PDB s können per Links innerhalb eine CDB mit einander kommunizieren Wenn CDB gepatcht wird, wird diese Änderung gleichzeitig auf PDB s wirksam Spfile wird von PDB s und CDB geteilt Alert.log Datei gibt es nur ein Mal für CDB und alle PDB s Beim stoppen von CDB werden alle PDB s gleichzeitig runtergefahren Beim löschen von CDB werden alle PDB s incl. Seed Database gelöscht Seite 7
Bausteine und Hauptkomponente User Berechtigungen bei CDB und PDB CDB haben sogenannte Common-User und PDB Local User : Ein Common User ist im root definiert und wird in jeder PDB repräsentiert ein Common User kann sich mit Create Session -Privileg an jede PDB anmelden ist Besitzer von Oracle Systemobjekten hat common grants Berechtigungen CDB Administratoren können Zugriff auf alle oder nur auf bestimmte PDB haben Local User entsprechen einem User der innerhalb PDB definiert wurde sind nur in einer PDB definiert können eine PDB administrieren Local User hat keinen Zugriff auf PDBs, die in der gleichen CDB betrieben werden hat local grants Berechtigungen Seite 8
Neue Dictionary Informationen zu CDB / PDB Data Dictionary wurde um neue CDB View-Ebene erweitert Neue Dictionary Tabellen: z.b. cdb_pdbs, cdb_dba, pdb_dba, dba_pdbs, v$pdbs CDB und DBA_PDB s View sind nur in der CDB verfügbar Jede View wurde um die Spalte CON_ID erweitert sql>select username,con_id from cdb_users; PDB Id s werden wie folgt ermittelt sql> select name,con_id from v$pdbs; Gegensatz zu CDB, werden nur die Data Dictionary Informationen zu der jeweilige PDB angezeigt Seite 9
Neue Dictionary Informationen zu CDB / PDB Parametrisierung Es besteht die Möglichkeit Einstellung für PDB auf einmal zu setzen Für alle PDBs sql>alter system set resource_limit=true container=all; Für bestimmte PDB sql>alter system set resource_limit=true container=current; Oder wenn man an bestimmte PDB angemeldet ist sql>alter system set resource_limit=true; Alle PDB Parameter, die mittels alter system set gesetzt sind, werden beim Unplug/Plug mitberücksichtigt PDB Init Parameter anzeigen sql>select name,value from v$system_parameter where ispdb_modifiable= TRUE ; CDB Init Parameter ermitteln sql>select name,value from v$system_parameter where ispdb_modifiable= FALSE; Seite 10
Neue Dictionary Informationen zu CDB / PDB Gegensatz zu CDB, laufen alle PDB s in MOUNTED, READ WRITE oder READ ONLY Modus Folgende Tabellen zeigen aktueller Status von Datenbanken Seite 11
Administration von Multitenant Feature CDB erstellen / verwalten per DBCA per Oracle Cloud Control per Sqlplus a) Init Datei wird um Parameter ENABLE_PLUGGABLE_DATABASE = TRUE erweitert b) Datenbank wird in Nomount Modus gesetzt c) Container DB erstellen sql>createdatabase CDB enable pluggable database seed file_name_convert ('/oracle/dbs','/oracle/seed'); d) Seed PDB wird gestoppt / gestartet und post-creation scripts ausgeführt Seite 12
Administration von Multitenant Feature PDB erstellen / verwalten per DBCA per Sqlplus, SQL Developer und Oracle Cloud Control ab Version 12.1.0.3 Beim erstellen von PDB muss User Berechtigung CREATE PLUGGABLE DATABASE haben.erstellen einer PDB mit der Seed-DB Erstellen einer PDB durch Klonen einer anderen PDB Migration einer Non-CDB zu einer PDB Seite 13
Administration von Multitenant Feature Zugriff auf PDB einrichten Mit dem Eintrag in tnsnames.ora sqlplus system/oracle@pdb1 oder wenn man grade beim CDB angemeldet ist sql>alter session set container=pdb1 Ohne Eintrag in tnsnames.ora sqlplus system/oracle@localhost:1521/pdb1 Seite 14
Administration von Multitenant Feature Ermitteln ob CDB Option aktiviert ist sql>showparameter enable_pluggable_database Anmeldung an CDB sql>alter session set container = cdb$root; Alle PDB s anzeigen PDB stoppen / starten sql>alter pluggable database pdb1 close; sql>alter pluggable database pdb1 open; Ermitteln an welche DB (PDB oder CDB) User grade angemeldet ist sql>show con_name PDB löschen sql>alter pluggable database pdb1 close; sql>drop pluggable database pdb1 [INCLUDING DATAFILES]; Seite 15
PDB Klonen PDB werden per SQL Plus, SQL Developer und Cloud Control ab Version 12.1.0.3 geklont Manuel: a) Haupt PDB wird geschlossen und in Read Only Modus gesetzt sql>alter pluggable database pdb1 close; sql>alter pluggable database pdb1 open read only; b) Ordner für neue PDB Files erstellen c) Sich an CDB anmelden und PDB2 als PDB1 clonen sql>create pluggable database pdb2 from pdb1; d) PDB in Read Write Modus setzen sql>alter pluggable database pdb1 read write; e) Full CDB Backup ausführen Seite 16
Unplug / Plug von PDB s Unplug / Plug per DBCA Unplug PDB mindestens ein Mal in Read Write Modus öffnen Wird XML Konfiguration File, mit allen Informationen zu PDB, erstellt Eine ausgeklinkte PDB beinhaltet Infos zu opatch, encryption keys, patchstand und etc. Plug Xml und erstellte.dbf Backup Files werden verschoben oder kopiert Und PDB wird als Clone per DBCA erstellt Neue PDB wird automatisch von DBCA geöffnet.nach dem neue PDB registriert Full CDB Backup ausführen Seite 17
Unplug / Plug von PDB s Unplug / Plug per Sqlplus Unplug a) PDB wird gestoppt sql> alter pluggable database pdb1 close; b) Unplug wird in CDB Sitzung mit Privileg SYSDBA / SYSOPER durchgeführt. sql> alter pluggable database pdb1 unplug into '/tmp/oracle/pdb1.xml'; c) Empfehlung! Löschen Sie die PDB ohne Datendateien: sql> drop pluggable database pdb1; Seite 18
Unplug / Plug von PDB s Unplug / Plug per Sqlplus Plug: Vorbereitung a) Datendateien und die XML-Datei werden auf den Zielserver kopiert b) Sich an CDB mit Privileg SYSDBA / SYSOPER anmelden c) Prüfen Sie, ob die PDB kompatibel zur CDB ist: d) Wenn die Speicherpfade der Datendateien gleich bleiben, dann reicht ein: sql>create pluggable database pdb2 using '/tmp/oracle/pdb1.xml nocopy tempfile reuse; Seite 19
Unplug / Plug von PDB s Unplug / Plug per Sqlplus Plug: Durchführung a) Wenn Speicherpfade sich unterscheiden, dann wird SOURCE_FILE_NAME_CONVERT verwändet. sql>create pluggable database pdb2 using '/tmp/oracle/pdb1.xml nocopy SOURCE_FILE_NAME_CONVERT= ( /oracle/oradata/pdb1/', '/oracle/oradata/pdb2/) tempfile reuse; b) Prüfen Sie das Ergebnis in V$PDBS: c) PDB wird dann geöffnet sql>alter pluggable database pdb2 open; d) Nach dem neue PDB registriert wurde Full CDB Backup ausführen Seite 20
Migration von Non-CDB 11G zu 12c PDB Per Sqlplus: Vorbereitung Hinweis! Es wird erst 12c DB erstellt und Inhalt per exp/imp von 11G importiert a) Pfade zu DB Files ermitteln b) Erstellen Sie ein Backup der Non-CDB c) Non-CDB wird im READ ONLY-Modus geöffnet d) Starten Sie die Prozedur DBMS_PDB.DESCRIBE in der Non-CDB (nur bei 12c möglich): Seite 21
Migration von Non-CDB 11G zu 12c PDB Per Sqlplus: Durchführung a) Non-CDB wird gestoppt b) Alle.dbf und erstellte XML Files werden in erstellte PDB Ordner bei neu erstellte CDB kopiert c) Neu PDB wird mit Hilfe von XML erstellt d) Tnsnames.ora mit neuen Eintrag erweitern e) Bei PDB Script $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql ausführen f) Jetzt kann PDB ganz normal gestoppt und geöffnet werden sql>alter pluggable database pdb2 close; sql>alter pluggable database pdb2 open; g) Full CDB Backup ausführen Seite 22
Migration von Non-CDB 11G zu 12c PDB Per Exp/Imp a) In CDB leere PDB erstellen b) Tnsnames.ora mit dem neuen Eintrag erweitern c) PDB wird geöffnet sql>alter pluggable database pdb1 open; d) DBA Privileg vergeben sql>grant dba to pdbadm; e) Per Data Pump ein Full Database Export der Non-CDB erstellen expdp system@noncdb directory=expdir dumpfile=noncdb.dmp full=y f) Es wird in der neuen PDB ein Directory für Data Pump erstellt g) Daten werden in der Non-CDB mit DATA PUMP importiert impdp pdbadm@pdb1 directory=impdir dumpfile=noncdb.dmp full=y h) Full CDB Backup ausführen Seite 23
Backup und Restore von CDB / PDB Backup CDB / PDB ARCHIVELOG Modus, LOG_ARCHIVE_DEST_n und RECOVERY_FILE_DEST nur auf CDB-Ebene Möglich CDB RMAN Backup wird mit Standard Befehl rman>backup database plus archivelog; durchgeführt Bei CDB sollte auch Root Datenbank täglich mitgesichert werden rman>backup as compressed backupset database root; Um PDB zu sichern benötigt User SYSBACKUP Privileg Bei PDB Backup werden Informationen nur zur bestimmte PDB gesichert rman target sys/oracle@localhost/cdb rman target=sys@pdb1 Mehrere PDB gleichzeitig aus CDB raus sichern rman>backup pluggable database pdb1,pdb2 plus archivelog; Seite 24
Backup und Restore von CDB / PDB Restore CDB Wenn CDB restored wird sind gleichzeitig alle PDB s getroffen CDB wird standardmäßig wie Non-CDB wiederhergestellt Es besteht die Möglichkeit korrupte Root Datenbank restoren, wird aber CDB dabei runtergefahren rman target / rman>run{ shutdown immediate; startup mount; restore database root; recover database root; alter database open; alter pluggable database all open; } Seite 25
Backup und Restore von CDB / PDB Restore PDB Bevor PDB wiederhergestellt wird, soll erst Backup verifiziert werden rman target sys/oracle@localhost/pdb1 rman>validate pluggable database pdb1; rman>restore pluggable database pdb1 validate; Beim restoren werden nur bestimmte PDB wiederhergestellt rman>alter pluggable database pdb1 close; rman>run{ restore pluggable database pdb1; recover pluggable database pdb1; alter pluggable database pdb1 open; } Incarnation abfragen sql>select * from v$pdb_incarnation; Seite 26
Lizensierung Aspekte Bei Oracle Standard Edition und Standard One ist nur eine PDB erlaubt Ab Oracle Enterprise Edition sind 252 PDB s möglich Bei Oracle Enterprise Edition wird Multitenant Option als extra Option Lizensiert Seite 27
Sonstiges Verlust von PDB System Tablespace führt zu dem Absturtz von CDB Offizielle Aussage von Oracle Support zu dem Oracle 12.1.0.1 Multitenant Bug CDB must be restarted if PDB system datafile is lost. For non-system datafiles, you can offline, restore, recover, and online them..all while CDB is online. We plan to address the lost system datafile scenario in a future release. Wenn CDB abstürtz sind folgende Fehlermeldungen in Alert.log Datei zu finden: Seite 28
Sonstiges Temporary Lösung a) CDB mounten sql>startup mount b) System Datafile von PDB restoren und recovern rman target sys/oracle@localhost/pdb1 rman>run{ alter database datafile 8 offline; restore datafile 8; recover datafile 8; alter database datafile 8 online; } c) Container Datenbank öffnen sql>alter database open; d) Pluggable Database öffnen sql>alter pluggable database pdb1 open; e) Full Backup für CDB starten Seite 29
Quelle Oracle Dokumentation Multitenant Administration http://docs.oracle.com/cd/e16655_01/server.121/e17633/cdbovrvw.htm#cncpt89234 http://docs.oracle.com/cd/e16655_01/server.121/e17633/cdblogic.htm#cncpt89248 http://docs.oracle.com/cd/e16655_01/server.121/e17636/part_cdb.htm http://docs.oracle.com/cd/e16655_01/backup.121/e17630/rcmbckba.htm#bradv428 http://docs.oracle.com/cd/e16655_01/backup.121/e17630/rcmresind.htm#beibhhgc Lizensierung http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf http://docs.oracle.com/cd/e16655_01/license.121/e17614.pdf Seite 30
Fragen und Antworten Seite 31
Kontakt Ilgar Machmudov Oracle & SQL Server DBA OPITZ CONSULTING Deutschland GmbH Kirchstr. 6 51647 Gummersbach Tel. +49 (2261) 60 01-0 ilgar.machmudov@opitz-consulting.com youtube.com/opitzconsulting @OC_WIRE slideshare.net/opitzconsulting xing.com/net/opitzconsulting Seite 32