Restaurar el espacio de tabla USERS no funciona. Copia de seguridad de Oracle
Creé un esquema y my_table_test;
ALTER SESSION SET CURRENT_SCHEMA=c##wojtek_admin;
CREATE TABLE my_table_test
( id_test INT
);

Luego creé una copia de seguridad usando: BACKUP TABLESPACE USERS FORMAT 'c:\FRA\users%u';
Luego solté my_table_test y ejecuté los siguientes comandos:
RMAN> RUN{
2> SQL 'ALTER TABLESPACE USERS OFFLINE';
3> RESTORE TABLESPACE USERS;
4> RECOVER TABLESPACE USERS;
5> SQL 'ALTER TABLESPACE USERS ONLINE';
6> }
¿Por qué my_table_test se descarta después de restaurar USERS TABLESPACE?


Respuestas
En una base de datos de varios inquilinos, tendrá varios espacios de tabla 'USERS'. Uno a nivel de CDB y uno para cada PDB.
RMAN> report schema;
Report of database schema for database with db_unique_name T101N
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 960 SYSTEM YES +DATAC4/T101N/DATAFILE/system.500.1057688607
3 620 SYSAUX NO +DATAC4/T101N/DATAFILE/sysaux.498.1057688643
4 840 UNDOTBS1 YES +DATAC4/T101N/DATAFILE/undotbs1.587.1057688657
5 310 PDB$SEED:SYSTEM NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.482.1057689319 6 380 PDB$SEED:SYSAUX NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.503.1057689319
7 5 USERS NO +DATAC4/T101N/DATAFILE/users.499.1057688659
8 190 PDB$SEED:UNDOTBS1 NO +DATAC4/T101N/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.489.1057689319 9 310 PDB1:SYSTEM YES +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/system.405.1057690077 10 390 PDB1:SYSAUX NO +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/sysaux.501.1057690077 11 195 PDB1:UNDOTBS1 YES +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/undotbs1.497.1057690077 12 5 PDB1:USERS NO +DATAC4/T101N/B52F60948095635FE053B506330A63CA/DATAFILE/users.566.1057690091 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 67 TEMP 32767 +DATAC4/T101N/TEMPFILE/temp.573.1057688719 2 43 PDB$SEED:TEMP 32767 +DATAC4/T101N/B52F34797E9D6750E053B506330AE7C0/TEMPFILE/temp.481.1057689337
3 43 PDB1:TEMP 32767 +DATAC4/T101N/B52F60948095635FE053B506330A63CA/TEMPFILE/temp.496.1057690079
¡Nota! La mejor característica de RMAN. RMAN realmente puede decirle qué hacer en diferentes escenarios.
# data recovery advisor (DRA)
list failure all;
advise failure;
repair failure preview;
repair failure;
Primero, es importante tener en cuenta que parece que está usando una base de datos de múltiples inquilinos, pero ha decidido colocar los datos del usuario dentro del contenedor raíz, esto generalmente es una mala idea; debería usar una base de datos conectable para casi todo ( esto también significará que no necesita prefijar sus nombres de usuario con C##
.
Sus declaraciones de restauración y recuperación recuperarán el espacio de tabla hasta ahora. Si desea recuperarlo antes de soltar el espacio de tabla, Oracle también deberá trabajar en el system
espacio de tabla (para el diccionario de datos), pero no solo desea restaurar y recuperar su USERS
espacio de tabla. Debería restaurar su copia de seguridad en otro lugar, recuperarla en el punto deseado, luego tomar el USERS
espacio de tabla y volver a colocarlo en su base de datos original.
Esto se conoce simplemente como Tablespace Point In Time Recovery, Oracle ha hecho todo el trabajo de creación de scripts por usted, pero debe leer lo que está sucediendo. https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtspit.htm#BRADV89790
RECOVER TABLESPACE users
UNTIL ?
AUXILIARY DESTINATION '?';
(Una vez que haya leído los documentos, verá cómo completar esto).
También existe la posibilidad de hacer esto fácilmente a nivel de tabla, por lo que si solo desea recuperar esa tabla eliminada y no revertir todo lo demás en ese espacio de tabla, puede:
RECOVER TABLE c##wojtek_admin.my_table_test
UNTIL ?
AUXILIARY DESTINATION '?' ;
Ver https://oracle-base.com/articles/12c/rman-table-point-in-time-recovery-12cr1 para mas detalles.