Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a Oracle Cloud Infrastructure Free Tier.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Restaurar PDB multi-inquilino borrada mediante una instancia auxiliar en el mismo servidor de DBCS
Introducción
En una base de datos de contenedor (CDB) multi-inquilino, los metadatos de las tablas del diccionario de datos y las definiciones de vista se almacenan solo en la raíz. Sin embargo, cada base de datos de conexión (PDB) tiene su propio juego de tablas y vistas del diccionario de datos para los objetos de base de datos incluidos en la PDB.
Por lo tanto, una base de datos de conexión (PDB) no se puede restaurar como una base de datos. Se debe restaurar como objeto de base de datos mediante una instancia auxiliar. Si una base de datos de conexión (PDB)/archivos de datos se suprimen accidentalmente, se corrompen, etc., el repositorio/metadatos para la PDB sigue existiendo y se puede restaurar y recuperar
Si una PDB se borra accidental o intencionalmente mediante el comando DROP PLUGGABLE DATABASE <PDBNAME>
, se borrará la PDB y se eliminarán los metadatos del repositorio. Por lo tanto, una restauración de la PDB (incluida la PDB PITR antes del tiempo de borrado) fallará con un error como RMAN-06813: could not translate pluggable database PDBxx
.
Objetivos
Restaure y recupere una PDB que se ha borrado, incluidos los archivos de datos. Como no se puede restaurar en la misma CDB, crearemos una instancia auxiliar y restauraremos la PDB en la misma instancia y también en el origen.
Requisitos
-
Completar la configuración de la base de datos Oracle Database Cloud Service (DBCS)
-
Realizar una copia de seguridad completa de la CDB
Tarea 1: Creación de una nueva base de datos de conexión
-
Ejecute los siguientes comandos para la creación de la base de datos de conexión.
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
Tarea 2: Copia de seguridad de la base de datos de contenedor (CDB)
-
Conéctese a RMAN mediante el usuario sysdba o sysbackup y realice una copia de seguridad de la base de datos de CDB que incluye la base de datos de conexión
. RMAN>BACKUP DATABASE PLUS ARCHIVELOG ALL;
Tarea 3: Borrar la base de datos de conexión creada en la tarea 1
-
Para simular el caso, borramos la base de datos de conexión
. SQL> drop pluggable database <PDBNAME3> INCLUDING DATAFILES ;
Tarea 4: Restaurar la base de datos conectable borrada en la misma base de datos de origen
-
Al intentar restaurar la PDB como una base de datos, en el mismo contenedor, falla con el error 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>
Tarea 5: Crear una instancia auxiliar temporal
-
Cree una instancia auxiliar temporal en el mismo origen (servidor de producción) o en otro servidor (servidor auxiliar) para restaurar la base de datos de contenedor (CDB) y la base de datos de conexión (PDB) necesaria.
-
En este ejemplo, la instancia auxiliar se crea en el mismo servidor de origen.
-
Cree un archivo de inicialización para la instancia auxiliar.
-- 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/'
Tarea 6: Iniciar la instancia auxiliar en estado no montada
-
Inicie la instancia auxiliar en estado no montada mediante los siguientes comandos.
[oracle@sud ~]$ mkdir -p /home/oracle/CDBAUX02
[oracle@sud ~]$ cd /home/oracle/CDBAUX02
[oracle@sud CDBAUX02]$ export ORACLE_SID=CDBAUX02
Tarea 7: Restaurar el archivo de control de la copia de seguridad en la instancia IdP y montar la base de datos
-
Restaure el archivo de control de la copia de seguridad en la instancia auxiliar y monte la base de datos con los siguientes comandos.
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; }
Tarea 8: Restaurar y recuperar la base de datos de PDB borrada en la instancia auxiliar
-
Restaure y recupere la base de datos de PDB borrada en la instancia auxiliar mediante los siguientes comandos.
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 datos origen tiene varias PDB y queremos restaurar la CDB con UNA SOLA PDB, desactive la recuperación para todas las demás PDB de la base de datos auxiliar como anteriormente y restaure solo la PDB borrada junto con la base de datos de contenedor raíz.
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; }
-
Cuando RMAN ha aplicado el último redo log archivado en la copia de seguridad y no puede encontrar más logs, aparece un mensaje similar al siguiente: No se ha encontrado el log archivado.
-
Recupere la base de datos con el siguiente comando.
SQL> recover database using backup controlfile until cancel;
Tarea 9: Agregar y borrar el archivo redo log en línea en la base de datos origen
-
Grupos de redo logs en línea que agregan (4,5,6) y suprimen (1,2,3) en el servidor de origen.
-
Consulte el tamaño de los logs actuales.
select GROUP#,THREAD#,MEMBERS,STATUS,BYTES/1024/1024 from v$log;
-
Vamos a crear 3 nuevos grupos de logs y asignarles un nombre a los grupos 4, 5 y 6, con un tamaño de 2048 MB cada uno.
alter database add logfile group 6 size 2048m
alter system switch logfile
-
Cambie hasta que entren en el grupo de logs 4, para que podamos borrar los grupos de logs 1, 2 y 3.
alter database drop logfile group 3
-
Recupere todos los nombres de miembros de log para los grupos.
select member from v$logfile;
Tarea 10: abrir la base de datos en resetlogs en la instancia auxiliar
-
Abra la base de datos en resetlogs en la instancia auxiliar con el siguiente comando.
SQL> alter database open resetlogs;
Tarea 11: Modificar la base de datos de conexión en la instancia auxiliar
-
Modifique la base de datos de conexión para que lea el modo de escritura en la instancia auxiliar.
SQL> alter pluggable database <PDBNAME3> open read write;
Tarea 12: Crear usuario y otorgar permiso para dblink
-
Cree usuarios y otorgue permiso para el enlace de base de datos en la instancia auxiliar y el origen.
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;
-
Cree el enlace de base de datos en el origen.
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
Tarea 13: Clonar la base de datos de conexión PDB03 en el origen
-
Clone la base de datos conectable PDB03 en el origen.
CREATE PLUGGABLE DATABASE PDB03 FROM PDB03@CDBAUX02 NO REKEY KEYSTORE IDENTIFIED BY "XXXXXXX";
-
Cambiar el estado de las PDB en una CDB: ejemplo: suponga que el contenedor actual es la raíz. La siguiente sentencia abre las PDB en la CDB con el modo abierto READ WRITE.
alter pluggable database PDB03 open read write;
Confirmaciones
- Autor: Aditya Srivastawa (arquitecto principal de Cloud)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre los productos, visite 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.