Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Gelöschte mehrmandantenfähige PDB mit Auxiliary-Instanz auf demselben DBCS-Server wiederherstellen
Einführung
In einer mehrmandantenfähigen Containerdatenbank (CDB) werden die Metadaten für Data Dictionary-Tabellen und View-Definitionen nur in der Root gespeichert. Jede integrierbare Datenbank (PDB) verfügt jedoch über eine eigene Gruppe von Data Dictionary-Tabellen und -Views für die Datenbankobjekte in der PDB.
Eine integrierbare Datenbank (PDB) kann daher nicht als Datenbank wiederhergestellt werden. Sie muss als Datenbankobjekt mit einer Auxiliary-Instanz wiederhergestellt werden. Wenn eine integrierbare Datenbank (PDB)/Datendateien versehentlich gelöscht, beschädigt usw. werden, ist das Repository/die Metadaten für die PDB weiterhin vorhanden und können wiederhergestellt und wiederhergestellt werden
Wenn eine PDB versehentlich/absichtlich mit dem Befehl DROP PLUGGABLE DATABASE <PDBNAME>
gelöscht wird, wird die PDB gelöscht, und die Metadaten werden aus dem Repository entfernt. Daher schlägt eine Wiederherstellung der PDB (einschließlich PDB-PITR bis vor der gelöschten Zeit) mit einem Fehler wie RMAN-06813: could not translate pluggable database PDBxx
fehl.
Ziele
Eine gelöschte PDB einschließlich der Datendateien wiederherstellen und wiederherstellen. Da sie nicht in derselben CDB wiederhergestellt werden kann, erstellen wir eine Auxiliary-Instanz und stellen die PDB in der Auxiliary CDB auf derselben Instanz und auch in der Quelle wieder her.
Voraussetzungen
-
Oracle Database Cloud Service-(DBCS-)Datenbankkonfiguration abschließen
-
Vollständiges Backup der CDB erstellen
Aufgabe 1: Neue integrierbare Datenbank erstellen
-
Führen Sie die folgenden Befehle zum Erstellen einer integrierbaren Datenbank aus.
SQL> create pluggable database <PDBNAME3> admin user <USERNAME> identified by <PASSWORD>; COLUMN PDB_NAME FORMAT A15 SQL> SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID; PDB_ID PDB_NAME STATUS ---------- --------------- --------- 2 <PDBNAME$SEED> NORMAL 3 <PDBNAME1> NORMAL 4 <PDBNAME2> NORMAL 5 <PDBNAME3> NORMAL
Aufgabe 2: Containerdatenbank (CDB) sichern
-
Stellen Sie mit sysdba- oder sysbackup-Benutzer eine Verbindung zu RMAN her, und erstellen Sie ein Backup der CDB-Datenbank, die die integrierbare Datenbank
enthält. RMAN>BACKUP DATABASE PLUS ARCHIVELOG ALL;
Aufgabe 3: In Aufgabe 1 erstellte integrierbare Datenbank löschen
-
Um den Fall zu simulieren, löschen wir die integrierbare Datenbank
. SQL> drop pluggable database <PDBNAME3> INCLUDING DATAFILES ;
Aufgabe 4: Gelöschte integrierbare Datenbank in derselben Quelldatenbank wiederherstellen
-
Wenn Sie versuchen, die PDB als Datenbank in demselben Container wiederherzustellen, verläuft der Fehler RMAN-06813 nicht erfolgreich.
RMAN> restore pluggable database <PDBNAME3>; Starting restore at <MM/DD/YYYY> using channel ORA_DISK_1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at <MM/DD/YYYY HH:MI:SS> RMAN-06813: could not translate pluggable database <PDBNAME3>
Aufgabe 5: Temporäre Auxiliary-Instanz erstellen
-
Erstellen Sie eine temporäre Auxiliary-Instanz in derselben Quelle (Production Server) oder auf einem anderen Server (Auxiliary Server), um die Containerdatenbank (CDB) und die erforderliche integrierbare Datenbank (PDB) wiederherzustellen.
-
In diesem Beispiel wird eine Auxiliary-Instanz auf demselben Quellserver erstellt.
-
Erstellen Sie eine Initialisierungsdatei für die Auxiliary-Instanz.
-- create init<DBNAME AUX>.ora -- verify compatible parameter matches the version of your source db (init<DBCDBNAME>.ora) *.sga_target=10G *.control_files=+DATA/CDBAUX02/CONTROLFILE/control.ctl *.compatible=19.0.0.0.0 *.db_files=65534 *.db_create_file_dest=+DATA *.db_create_online_log_dest_1=+RECO *.undo_tablespace= UNDOTBS1 *.remote_login_passwordfile=EXCLUSIVE *.global_names=FALSE *.instance_name=CDBAUX02 *.audit_trail=DB *.db_name=CDB01 *.db_unique_name=CDBAUX02 *.enable_pluggable_database= TRUE *.db_recovery_file_dest=+RECO *.db_recovery_file_dest_size=40G *.wallet_root=/opt/oracle/dcs/commonstore/wallets/CDBAUX02 *.one_step_plugin_for_pdb_with_tde=FALSE *.tde_configuration='keystore_configuration=FILE' *.DB_FILE_NAME_CONVERT='CDB01_IAD1ZD','CDBAUX02' *.log_file_name_convert='+RECO/CDB01_IAD1ZD/ONLINELOG/','+RECO/CDBAUX02/ONLINELOG/'
Aufgabe 6: Auxiliary-Instanz im Nomountzustand starten
-
Starten Sie die Auxiliary-Instanz mit den folgenden Befehlen im Nomount-Status.
[oracle@sud ~]$ mkdir -p /home/oracle/CDBAUX02
[oracle@sud ~]$ cd /home/oracle/CDBAUX02
[oracle@sud CDBAUX02]$ export ORACLE_SID=CDBAUX02
Aufgabe 7: Kontrolldatei aus Backup in der IdP-Instanz wiederherstellen und Datenbank mounten
-
Stellen Sie die Kontrolldatei aus dem Backup in der Auxiliary-Instanz wieder her, und mounten Sie die Datenbank mit den folgenden Befehlen.
run { set dbid=1672349321; set until time "to_date('2023-05-02 17:03:27','YYYY-MM-DD HH24:MI:SS')"; allocate channel ch1 device type sbt parms 'SBT_LIBRARY=/opt/oracle/dcs/commonstore/oss/CDB01_iad1zd/libopc.so ENV=(OPC_PFILE=/opt/oracle/dcs/commonstore/oss/CDB01_iad1zd/97164268-b09e-4c4d-8295-e3d3337b07e0/opc_CDB01_iad1zd.ora)'; restore controlfile from 'c-1672349321-20230502-13' ; alter database mount; }
Aufgabe 8: Gelöschte PDB-Datenbank in Auxiliary-Instanz wiederherstellen und wiederherstellen
-
Stellen Sie die gelöschte PDB-Datenbank in der Auxiliary-Instanz mit den folgenden Befehlen wieder her, und stellen Sie sie wieder her.
select status from V$BLOCK_CHANGE_TRACKING; alter database disable block change tracking; select status from V$BLOCK_CHANGE_TRACKING; ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE; alter database flashback off; Changing the State of (DISABLE RECOVERY) other PDB: set lines 300 pages 300 select 'alter session set container='||name||'; '|| CHR(13) || CHR(10) ||'alter pluggable database disable recovery; ' from v$pdbs where name not in ('PDB03');
-
Wenn die Quelldatenbank mehrere PDBs enthält und die CDB mit NUR einer PDB wiederhergestellt werden soll, deaktivieren Sie das Recovery für alle anderen PDBs in der Aux-Datenbank wie oben, und stellen Sie nur die gelöschte PDB zusammen mit der Root-Containerdatenbank wieder her.
run { set until time "to_date('2023-05-02 17:03:27','YYYY-MM-DD HH24:MI:SS')"; allocate channel ch1 device type sbt parms 'SBT_LIBRARY=/opt/oracle/dcs/commonstore/oss/CDB01_iad1zd/libopc.so ENV=(OPC_PFILE=/opt/oracle/dcs/commonstore/oss/CDB01_iad1zd/97164268-b09e-4c4d-8295-e3d3337b07e0/opc_CDB01_iad1zd.ora)'; set newname for database to '+DATA/'; restore pluggable database PDB03,root; switch datafile all; recover pluggable database PDB03,root; }
-
Wenn RMAN das letzte archivierte Redo Log im Backup angewendet hat und keine weiteren Logs finden kann, wird eine Meldung wie die folgende angezeigt: Archiviertes Log kann nicht gefunden werden.
-
Stellen Sie die Datenbank mit dem folgenden Befehl wieder her.
SQL> recover database using backup controlfile until cancel;
Aufgabe 9: Online Redo Log-Datei in Quelldatenbank hinzufügen und löschen
-
Online-Redo-Loggruppen hinzufügen (4,5,6) und löschen (1,2,3) im Quellserver.
-
Zeigen Sie die Größe der aktuellen Logs an.
select GROUP#,THREAD#,MEMBERS,STATUS,BYTES/1024/1024 from v$log;
-
Erstellen wir 3 neue Loggruppen und benennen sie die Gruppen 4, 5 und 6 mit jeweils 2048 MB.
alter database add logfile group 6 size 2048m
alter system switch logfile
-
Wechseln Sie, bis Sie zu Loggruppe 4 wechseln, damit die Loggruppen 1, 2 und 3 gelöscht werden können.
alter database drop logfile group 3
-
Rufen Sie alle Log-Member-Namen für die Gruppen ab.
select member from v$logfile;
Aufgabe 10: Datenbank in resetlogs in Auxiliary-Instanz öffnen
-
Öffnen Sie die Datenbank in resetlogs in der Auxiliary-Instanz mit dem folgenden Befehl.
SQL> alter database open resetlogs;
Aufgabe 11: Integrierbare Datenbank in Auxiliary-Instanz ändern
-
Ändern Sie die integrierbare Datenbank in den Schreibzugriffsmodus in der Auxiliary-Instanz.
SQL> alter pluggable database <PDBNAME3> open read write;
Aufgabe 12: Benutzer erstellen und Berechtigung für dblink erteilen
-
Erstellen Sie Benutzer, und erteilen Sie Dblink-Berechtigungen in Auxiliary-Instanz und Quelle.
CREATE USER C##PDBCLONEDBA IDENTIFIED BY "XXXXXXX"; GRANT CREATE SESSION TO C##PDBCLONEDBA CONTAINER=ALL; GRANT CREATE PLUGGABLE DATABASE TO C##PDBCLONEDBA CONTAINER=ALL; GRANT CREATE DATABASE LINK TO C##PDBCLONEDBA CONTAINER=ALL; GRANT SELECT ANY DICTIONARY TO C##PDBCLONEDBA CONTAINER=ALL; GRANT CREATE JOB TO C##PDBCLONEDBA CONTAINER=ALL; GRANT EXECUTE ON DBMS_SCHEDULER TO C##PDBCLONEDBA CONTAINER=ALL;
-
Datenbanklink in "Quelle" erstellen.
CREATE DATABASE LINK "CDBAUX02" CONNECT TO C##PDBCLONEDBA IDENTIFIED BY "XXXXXXX" USING '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.174)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = CDBAUX02)))'; 2 SQL> alter session set global_names=FALSE; Session altered. SQL> select * from dual@CDBAUX02; D -- x
Aufgabe 13: Integrierbare Datenbank PDB03 in Quelle klonen
-
Klonen Sie die integrierbare Datenbank PDB03 in der Quelle.
CREATE PLUGGABLE DATABASE PDB03 FROM PDB03@CDBAUX02 NO REKEY KEYSTORE IDENTIFIED BY "XXXXXXX";
-
Status von PDBs in einer CDB ändern: Beispiel: Angenommen, der aktuelle Container ist die Root. Die folgende Anweisung öffnet PDBs in der CDB mit dem Open-Modus READ WRITE.
alter pluggable database PDB03 open read write;
Bestätigungen
- Autor - Aditya Srivastawa (Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Restore a dropped multitenant PDB using auxiliary instance on the same DBCS server
F81982-01
May 2023
Copyright © 2023, Oracle and/or its affiliates.