Remarque :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Restaurer une base pluggable colocative supprimée à l'aide d'une instance auxiliaire sur le même serveur DBCS
Introduction
Dans une base de données Conteneur colocative, les métadonnées des tables du dictionnaire de données et des définitions de vue sont stockées uniquement dans la racine. Toutefois, chaque base de données pluggable possède son propre ensemble de tables et de vues du dictionnaire de données pour les objets de base de données contenus dans la base pluggable.
Par conséquent, une base de données pluggable ne peut pas être restaurée en tant que base de données. Il doit être restauré en tant qu'objet de base de données à l'aide d'une instance auxiliaire. Si une base de données pluggable/fichiers de données est supprimée accidentellement, endommagée, etc., le référentiel/les métadonnées de la base de données pluggable existent toujours et peuvent être restaurés et récupérés
Si une base de données pluggable est supprimée accidentellement ou intentionnellement à l'aide de la commande DROP PLUGGABLE DATABASE <PDBNAME>, cette opération supprime la base de données pluggable et enlève les métadonnées du référentiel. Par conséquent, une restauration de la base de données pluggable (y compris l'opération PITR de base de données pluggable jusqu'au moment de la suppression) échouera avec une erreur telle que RMAN-06813: could not translate pluggable database PDBxx.


Objectifs
Restaurez et récupérez une base de données pluggable supprimée, y compris les fichiers de données. Etant donné qu'il ne peut pas être restauré dans la même base de données Conteneur, nous allons créer une instance auxiliaire et restaurer la base de données pluggable dans la base de données Conteneur auxiliaire sur la même instance et également dans la source.
Prérequis
-
Terminer la configuration de la base de données Oracle Database Cloud Service (DBCS)
-
Effectuer une sauvegarde complète de la base Conteneur
Tâche 1 : créer une base de données pluggable
-
Exécutez les commandes suivantes pour la création de base de données pluggable.
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
Tâche 2 : Sauvegarder la base de données Conteneur
-
Connectez-vous à RMAN à l'aide de sysdba ou de l'utilisateur sysbackup et effectuez une sauvegarde de la base de données Conteneur qui inclut la base de données pluggable
. RMAN>BACKUP DATABASE PLUS ARCHIVELOG ALL;
Tâche 3 : supprimer la base de données pluggable créée dans la tâche 1
-
Pour simuler le cas, nous supprimons la base de données pluggable
. SQL> drop pluggable database <PDBNAME3> INCLUDING DATAFILES ;
Tâche 4 : restaurer la base de données pluggable supprimée dans la même base de données source
-
La tentative de restauration de la base de données pluggable en tant que base de données, dans le même conteneur, échoue avec l'erreur RMAN-06813.
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>
Tâche 5 : créer une instance auxiliaire temporaire
-
Créez une instance auxiliaire temporaire dans la même source (serveur de production) ou dans un autre serveur (serveur auxiliaire) pour restaurer la base de données Conteneur et la base de données pluggable requise.
-
Dans cet exemple, l'instance auxiliaire est créée sur le même serveur source.
-
Créez un fichier d'initialisation pour l'instance auxiliaire.
-- 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/'
Tâche 6 : démarrer l'instance auxiliaire avec l'état nomount
-
Démarrez l'instance auxiliaire avec l'état nomount à l'aide des commandes suivantes.
[oracle@sud ~]$ mkdir -p /home/oracle/CDBAUX02[oracle@sud ~]$ cd /home/oracle/CDBAUX02[oracle@sud CDBAUX02]$ export ORACLE_SID=CDBAUX02
Tâche 7 : restauration du fichier de contrôle à partir de la sauvegarde dans l'instance IdP et montage de la base de données
-
Restaurez le fichier de contrôle à partir de la sauvegarde dans l'instance auxiliaire et montez la base de données à l'aide des commandes suivantes.
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; }
Tâche 8 : restaurer et récupérer la base de données pluggable supprimée dans l'instance auxiliaire
-
Restaurez et récupérez la base de données pluggable supprimée dans l'instance auxiliaire à l'aide des commandes suivantes.
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'); -
Si la base de données source comporte plusieurs bases de données pluggables et que nous voulons restaurer une seule base de données Conteneur, désactivez la récupération pour toutes les autres bases de données pluggables de la base de données Aux comme ci-dessus et restaurez uniquement la base de données pluggable supprimée avec la base de données Conteneur racine.
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; } -
Lorsque RMAN a appliqué le dernier fichier de journalisation archivé à la sauvegarde et qu'il ne trouve plus de journaux, un message semblable au suivant s'affiche : Unable to find archived log.
-
Récupérez la base de données à l'aide de la commande suivante.
SQL> recover database using backup controlfile until cancel;
Tâche 9 : ajouter et supprimer le fichier de journalisation en ligne dans la base de données source
-
Ajout (4,5,6) et suppression (1,2,3) de groupes de fichiers de journalisation en ligne dans le serveur source.

-
Reportez-vous à la taille des journaux en cours.
select GROUP#,THREAD#,MEMBERS,STATUS,BYTES/1024/1024 from v$log; -
Créons 3 groupes de journaux et nommons-les groupes 4, 5 et 6, chacun de 2048 Mo.
alter database add logfile group 6 size 2048malter system switch logfile -
Basculez jusqu'à ce que nous soyons dans le groupe de journaux 4. Nous pouvons donc supprimer les groupes de journaux 1, 2 et 3.
alter database drop logfile group 3 -
Extrayez tous les noms de membre de journal des groupes.
select member from v$logfile;
Tâche 10 : ouvrir la base de données dans resetlogs dans l'instance auxiliaire
-
Ouvrez la base de données dans resetlogs dans l'instance auxiliaire à l'aide de la commande suivante.
SQL> alter database open resetlogs;
Tâche 11 : modifier la base de données pluggable dans l'instance auxiliaire
-
Modifiez la base de données pluggable en mode lecture/écriture dans l'instance auxiliaire.
SQL> alter pluggable database <PDBNAME3> open read write;
Tâche 12 : Créer un utilisateur et accorder des droits d'accès pour dblink
-
Créez des utilisateurs et accordez des droits d'accès pour le lien de base de données dans l'instance auxiliaire et la source.
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; -
Créez un lien de base de données dans la source.
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
Tâche 13 : clonage de la base de données pluggable PDB03 dans la source
-
Clonez la base de données pluggable PDB03 dans la source.
CREATE PLUGGABLE DATABASE PDB03 FROM PDB03@CDBAUX02 NO REKEY KEYSTORE IDENTIFIED BY "XXXXXXX"; -
Modifier l'état des bases de données pluggables dans une base de données Conteneur : par exemple, supposons que le conteneur en cours soit la racine. L'instruction suivante ouvre les bases de données pluggables dans la base de données Conteneur avec le mode ouvert READ WRITE.
alter pluggable database PDB03 open read write;
Accusés de réception
- Auteur - Aditya Srivastawa (architecte cloud principal)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation produit, consultez 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.