La restauration des utilisateurs de l'espace de table ne fonctionne pas. Sauvegarde Oracle
J'ai créé un schéma et my_table_test;
ALTER SESSION SET CURRENT_SCHEMA=c##wojtek_admin;
CREATE TABLE my_table_test
( id_test INT
);

Ensuite, j'ai créé une sauvegarde en utilisant: BACKUP TABLESPACE USERS FORMAT 'c:\FRA\users%u';
Ensuite, j'ai déposé my_table_test et exécutez les commandes ci-dessous:
RMAN> RUN{
2> SQL 'ALTER TABLESPACE USERS OFFLINE';
3> RESTORE TABLESPACE USERS;
4> RECOVER TABLESPACE USERS;
5> SQL 'ALTER TABLESPACE USERS ONLINE';
6> }
Pourquoi my_table_test est supprimé après la restauration de USERS TABLESPACE?


Réponses
Dans une base de données mutualisée, vous aurez plusieurs tablespaces «UTILISATEURS». Un au niveau CDB et un pour chaque 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
Remarque! La meilleure caractéristique de RMAN. RMAN peut en fait vous dire quoi faire dans différents scénarios.
# data recovery advisor (DRA)
list failure all;
advise failure;
repair failure preview;
repair failure;
Tout d'abord, il est important de noter qu'il semble que vous utilisez une base de données mutualisée mais que vous avez décidé de placer les données utilisateur dans le conteneur racine, c'est généralement une mauvaise idée - vous devriez utiliser une base de données enfichable pour à peu près tout ( cela signifie également que vous n'avez pas besoin de préfixer vos noms d'utilisateur avec C##
.
Vos instructions de restauration et de récupération récupéreront le tablespace jusqu'à présent. Si vous souhaitez le récupérer avant de supprimer le tablespace, Oracle devra également effectuer des travaux sur le system
tablespace (pour le dictionnaire de données) - mais vous ne voulez pas seulement restaurer et récupérer votre USERS
tablespace. Vous auriez besoin de restaurer votre sauvegarde ailleurs, de la récupérer au point souhaité, puis de prendre le USERS
tablespace et de le remettre dans votre base de données d'origine.
Ceci est simplement appelé la récupération du point d'espace disque dans le temps, Oracle a utilement effectué tout le travail de scriptage pour vous, mais vous devriez lire ce qui se passe. https://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtspit.htm#BRADV89790
RECOVER TABLESPACE users
UNTIL ?
AUXILIARY DESTINATION '?';
(Une fois que vous aurez lu les documents, vous verrez comment le remplir).
Il est également possible de le faire facilement au niveau de la table, donc si vous souhaitez uniquement récupérer cette table supprimée et ne pas restaurer tout le reste dans cet espace de table, vous pouvez:
RECOVER TABLE c##wojtek_admin.my_table_test
UNTIL ?
AUXILIARY DESTINATION '?' ;
Voir https://oracle-base.com/articles/12c/rman-table-point-in-time-recovery-12cr1 pour plus de détails.