Klonen von Oracle Datenbanken im Multitenant Umgebungen für Data Guard
Mit der Einführung der Multitenant Umgebung gibt es einige Punkte, die man beachten muss, wenn man eine Data Guard Umgebung einsetzt. Dieser Artikel beschreibt die korrekte Vorgangsweise sowohl bei Verwendung von Active Data Guard als auch ohne diese kostenpflichtige Option.
Die Ausgangssituation
Oracle 12.1.0.2 EE
Container Datenbank DBMAST (DB_UNIQUE_NAME: DBMAST_PR) (Primär Datenbank)
Pluggable DBMAST_PDB1
Pluggable DBMAST_PDB2
Container Datenbank DBMAST (DB_UNIQUE_NAME: DBMAST_ST) (physische Standby Datenbank)
Pluggable DBMAST_PDB1
Pluggable DBMAST_PDB2
Die Administration des Data Guard Verbundes erfolgt durch den Data Guard Broker (Datenbank DBMAST_PR und DBMAST_ST).
Statische Netzwerk Einträge für beide Datenbanken (DBMAST_PR und DBMAST_ST).
Die Aufgabe
Erweitern der Container Datenbank DBMAST durch das Erstellens eines Clones DBMAST_PDB3 von DBMAST_PDB1.
Die Lösung mit Active Data Guard lizensiert und konfiguriert
Wenn die Datenbank Option "Active Data Guard" (ADG) lizensiert und konfiguriert ist, genügt der Standard Clone Vorgang, um DBMAST_PDB3 zu erstellen (Voraussetzung: Standby Datenbank ist "read only" geöffnet und "Apply" läuft)
In der Primärdatenbank
SQL> alter pluggable database dbmast_pdb1 close immediate;
SQL> alter pluggable database dbmast_pdb1 open read only;
SQL> create pluggable database dbmast_pdb3 from dbmast_pdb1;
SQL> alter pluggable database dbmast_pdb3 open;
SQL> alter pluggable database dbmast_pdb3 save state;
SQL> alter pluggable database dbmast_pdb1 close immediate;
SQL> alter pluggable database dbmast_pdb1 open;
(Anm.: "alter pluggable database dbmast_pdb3 save state" ist optional und wird nur benötigt, wenn DBMAST_PDB3 bei jedem Start der CDB automatisch geöffnet werden soll)
Der Redo Apply Prozess in der Standby Datenbank kann bei ordnungsgemäßer Verwendung und Konfiguration von ADG die Source PDB Dateien kopieren und damit die PDB auch in der Standby Datenbank anlegen. Die neue PDB DBMAST_PDB3 wird ab sofort analog zu den bereits bestehenden PDBs aktualisiert.
Die Lösung ohne Active Data Guard
Wenn die Datenbank Option "Active Data Guard" (ADG) nicht lizensiert ist, muss anders vorgegangen werden, da der Redo Apply Prozess in der Standby Datenbank die Source PDB Dateien nicht konsistent kopieren kann.
In der Primärdatenbank:
SQL> alter pluggable database dbmast_pdb1 close immediate;
SQL> alter pluggable database dbmast_pdb1 open read only;
/* Das hier ist entscheidend */
SQL> create pluggable database dbmast_pdb3 from dbmast_pdb1 standbys=none;
/* ab hier wieder normal weiter */
SQL> alter pluggable database dbmast_pdb3 open;
SQL> alter pluggable database dbmast_pdb3 save state;
SQL> alter pluggable database dbmast_pdb1 close immediate;
SQL> alter pluggable database dbmast_pdb1 open;
Durch den Zusatz "standbys=none" (erst seit 12.1.0.2.0 verfügbar) wird die Einbindung der neuen PDB in das Recovery der Standby Datenbank hintangestellt und kann später erfolgen.
In der Standby Datenbank:
Mit dem Data Guard Broker Redo Apply stoppen:
DGMGRLT> edit database dbmast_st set state='APPLY-OFF';
Mit RMAN die Datenbank Dateien für die neue PDB in die Standby Datenbank kopieren.
$ rman target sys@dbmast_st
RMAN> run {
set newname for pluggable database dbmast_pdb3 to new;
restore pluggable database dbmast_pdb3 from service dbmast_pr;
switch datafile all;
}
Mit SQLPlus die neue PDB in das Recovery der Standby Datenbank einbinden
SQL> alter session set container=dbmast_pdb3;
SQL> alter pluggable database enable recovery;
Mit dem Data Guard Broker Redo Apply starten:
DGMGRL> edit database dbmast_st set state='APPLY-ON';
Für das Einbinden von remoten PDBs bzw. PDBs, die aus anderen CDBs "unplugged" wurden, kann analog vorgegangen werden.
Quellen: MOS Doc ID 1916648.1 und 2049127.1