IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

RMAN et tablespace supprimé : comment TOUT récupérer?


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut RMAN et tablespace supprimé : comment TOUT récupérer?
    Bonjour tout le monde,

    Je me prends la tête depuis hier sur le problème suivant : le 20/08 j'ai sauvegardé toute ma base avec RMAN, le 21/08 j'ai supprimé le tablespace TEST avec son contenu et les fichiers Unix, le 21/08 et le 22/08 j'ai refait une sauvegarde complète de ma base.

    Pour récupérer le tbs TEST, j'ai compris que je devais faire un restore et un recover incomplets pour éviter que le drop tablespace ne soit rejoué si je fais un recover complet.
    Ce qui m'embête c'est que je voudrais aussi récupérer tout ce qui s'est fait dans les transactions après le drop tablespace jusqu'à ce jour car ma base est en mode Archivelog.

    Or, d'après ce que j'ai lu, Oracle ne pemet pas de faire un recover en sautant telle ou telle transaction, je dois donc m'arrêter avant le DROP tablespace et perdre tout ce qui a été fait après.

    Ma question est : est-il possible de faire un restore/recover incomplet de la base en s'arrêtant avant le drop tablespace, de faire avec datapump un export/import du tbs TEST vers une base de données tiers, puis de faire un restore/recover complet sur ma première base en utilisant la toute dernière sauvegarde du 22/08 puis de faire depuis la base tiers un export du tbs TEST et l'importer dans ma base?

    De la sorte je récupère toute ma base mais, quelque chose me dit que ça va coincer...
    Je ne l'ai pas testé car je n'ai qu'une base à ma disposition mais j'aimerai, sur le principe, savoir si c'est faisable ou si c'est totalement irréaliste et, dans ce cas, pourquoi.

    Merci pour vos conseils!

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 462
    Par défaut
    Votre scénario me paraît jouable, mais à vrai dire il n'y a techniquement pas besoin de base tierce dans l'affaire.
    Si vous exportez votre tablespace, son contenu sera dans le fichier DMP, que vous importerez par la suite.

    "..faire un restore/recover incomplet de la base en s'arrêtant avant le drop tablespace, ... puis de faire un restore/recover complet sur ma première base en utilisant la toute dernière sauvegarde du 22/08"
    Comme vous le dites bien, le 2e recover devra bien être précédé d'une restauration de l'ensemble des fichiers.

    Mais on devrait pouvoir se passer de la 2e restauration si on procède ainsi :
    1) restore/recover jusqu'avant la suppression du tablespace
    2) ouverture de la base en READ ONLY (surtout pas OPEN RESETLOGS)
    3) export du tablespace soit par EXP, soit par EXPDP mais depuis une autre base, à travers un dblink. (Car EXPDP a besoin de créer la table dite MASTER, ce qui n'est pas possible directement dans la base en lecture seule)
    4) redémarrage de la base en MOUNT
    5) poursuite du RECOVER (il faut bien sûr avoir tous les archivelogs nécessaires)
    6) ouverture de la base
    7) import

    Je ne dis pas que c'est mieux, si ça se trouve il est plus rapide de restaurer les DBF une 2e fois que de rejouer des Go d'archivelogs, mais je trouve la manipulation intéressante.
    Et surtout, je ne l'ai pas testé !!

  3. #3
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Merci à toi Pomalaix, je testerai cela dès que possible :-)

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Salut Pomalaix,

    Je coince sur ma restauration de tablespace, peux-tu me conseiller?

    Pour rappel j'ai sauvegardé le 20, 21 et 22/08 la totalité de ma base mais attention, uniquement la PDB, pas le CDB$ROOT.
    Le 21 j'ai supprimé un tabelspace et depuis je veux le récupérer.

    Sauvegarde du 22/08 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    RMAN> backup database;
     
    Starting backup at 22-AUG-17
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=32 device type=DISK
    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00010 name=/u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
    input datafile file number=00011 name=/u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
    input datafile file number=00009 name=/u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
    input datafile file number=00016 name=/u01/app/oracle/oradata/orcl12c/orcl/APEX_1991375173370654.dbf
    input datafile file number=00012 name=/u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
    input datafile file number=00014 name=/u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf
    channel ORA_DISK_1: starting piece 1 at 22-AUG-17
    channel ORA_DISK_1: finished piece 1 at 22-AUG-17
    piece handle=/u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T093715_dsrdwdr4_.bkp tag=TAG20170822T093715 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:01:25
    Finished backup at 22-AUG-17
    Ensuite je supprime le tablespace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> DROP TABLESPACE APEX_1991375173370654 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
    Tablespace dropped.

    Calcul du SCN du DROP TABLESPACE en utilisant le fichier d'alertes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    2017-08-22 12:49:51.904000 -04:00
    DROP TABLESPACE APEX_1991375173370654 INCLUDING CONTENTS AND DATAFILES CASCADE 	CONSTRAINTS
    2017-08-22 12:49:58.364000 -04:00
    Deleted file /u01/app/oracle/oradata/orcl12c/orcl/APEX_1991375173370654.dbf
    Completed: DROP TABLESPACE APEX_1991375173370654 INCLUDING CONTENTS AND DATAFILES 	CASCADE constraints
     
    SQL> select timestamp_to_scn(to_date('22-08-17 12.49.51', 'DD-MM-YY HH:MI:SS')) as scn from dual;
    SCN
    ----------
    3040951
    Le tablespace n'est plus connu de RMAN car le fichier de contrôle a été mis à jour. A noter que je n'utilise pas de catalog.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    RMAN> report schema ;
    using target database control file instead of recovery catalog
    Report of database schema for database with db_unique_name ORCL12C
     
    List of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    9    350      SYSTEM               NO      /u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
    10   1180     SYSAUX               NO      /u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
    11   460      UNDOTBS1             NO      /u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
    12   86       USERS                NO      /u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
    14   2        APEX_1993195660370985 NO      /u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf
     
    List of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    3    64       TEMP                 32767       /u01/app/oracle/oradata/orcl12c/orcl/temp01.dbf
    Je fais une nouvelle sauvegarde de la PDB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    RMAN> backup database plus archivelog TAG = 'Backup after drop tbs';
     
    Starting backup at 22-AUG-17
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=32 device type=DISK
    specification does not match any archived log in the repository
    backup cancelled because there are no files to backup
    Finished backup at 22-AUG-17
     
    Starting backup at 22-AUG-17
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00010 name=/u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
    input datafile file number=00011 name=/u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
    input datafile file number=00009 name=/u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
    input datafile file number=00012 name=/u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
    input datafile file number=00014 name=/u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf
    channel ORA_DISK_1: starting piece 1 at 22-AUG-17
    channel ORA_DISK_1: finished piece 1 at 22-AUG-17
    piece handle=/u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T125835_dsrrow6l_.bkp tag=TAG20170822T125835 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
    Finished backup at 22-AUG-17
     
    Starting backup at 22-AUG-17
    using channel ORA_DISK_1
    specification does not match any archived log in the repository
    backup cancelled because there are no files to backup
    Finished backup at 22-AUG-17

    Dans ma première sauvegarde j'ai bien le tablespace avant qu'il ne soit supprimé, mais pas son nom. On voit aussi qu'il n'est pas dans la dernière sauvegarde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    RMAN> list backup;
    	…
    	BS Key  Type LV Size       Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    24      Full    1.36G      DISK        00:01:17     22-AUG-17      
            BP Key: 24   Status: AVAILABLE  Compressed: NO  Tag: TAG20170822T093715
            Piece Name: /u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T093715_dsrdwdr4_.bkp
      List of Datafiles in backup set 24
      File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
      ---- -- ---- ---------- --------- ----------- ------ ----
      9       Full 3034221    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
      10      Full 3034221    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
      11      Full 3034221    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
      12      Full 3034221    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
      14      Full 3034221    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf
      16      Full 3034221    22-AUG-17              NO    
     
    BS Key  Type LV Size       Device Type Elapsed Time Completion Time
    ------- ---- -- ---------- ----------- ------------ ---------------
    26      Full    1.36G      DISK        00:00:50     22-AUG-17      
            BP Key: 26   Status: AVAILABLE  Compressed: NO  Tag: TAG20170822T125835
            Piece Name: /u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T125835_dsrrow6l_.bkp
      List of Datafiles in backup set 26
      File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
      ---- -- ---- ---------- --------- ----------- ------ ----
      9       Full 3041164    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
      10      Full 3041164    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
      11      Full 3041164    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
      12      Full 3041164    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
      14      Full 3041164    22-AUG-17              NO    /u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf

    Dans la PDB, je passe en mode MOUNT et je fais un RESTORE dans le passé qui est OK. En revanche le RECOVER est impossible dans la PDB, il faut être dans le CDB$ROOT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    	RMAN> shutdown immediate;
    	database closed
    	RMAN> startup mount;
    	RMAN> RUN
    	{
    	  SET UNTIL SCN 3040951;
    	  RESTORE DATABASE;
    	  RECOVER DATABASE;
    	}
    
    executing command: SET until clause
    
    Starting restore at 25-AUG-17
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=254 device type=DISK
    
    channel ORA_DISK_1: starting datafile backup set restore
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set
    channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/orcl12c/orcl/system01.dbf
    channel ORA_DISK_1: restoring datafile 00010 to /u01/app/oracle/oradata/orcl12c/orcl/sysaux01.dbf
    channel ORA_DISK_1: restoring datafile 00011 to /u01/app/oracle/oradata/orcl12c/orcl/undotbs01.dbf
    channel ORA_DISK_1: restoring datafile 00012 to /u01/app/oracle/oradata/orcl12c/orcl/users01.dbf
    channel ORA_DISK_1: restoring datafile 00014 to /u01/app/oracle/oradata/orcl12c/orcl/APEX_1993195660370985.dbf
    channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T093715_dsrdwdr4_.bkp
    channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/orcl12c/ORCL12C/49BFF8A6BB912582E0530100007F8BE4/backupset/2017_08_22/o1_mf_nnndf_TAG20170822T093715_dsrdwdr4_.bkp tag=TAG20170822T093715
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:01:06
    Finished restore at 25-AUG-17	
    
    Starting recover at 25-AUG-17
    using channel ORA_DISK_1
    applied offline range to datafile 00009
    offline range RECID=101 STAMP=952695955
    applied offline range to datafile 00010
    offline range RECID=100 STAMP=952695955
    applied offline range to datafile 00011
    offline range RECID=99 STAMP=952695955
    applied offline range to datafile 00012
    offline range RECID=98 STAMP=952695955
    applied offline range to datafile 00014
    offline range RECID=97 STAMP=952695955
    
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of recover command at 08/25/2017 10:31:01
    RMAN-07536: command not allowed when connected to a Pluggable Database
    Je ne peux pas faire de RESTORE dans le CDB$ROOT car je n'ai sauvegardé que la PDB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    RMAN> restore database until SCN 3040951;
     
    Starting restore at 25-AUG-17
    using channel ORA_DISK_1
     
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of restore command at 08/25/2017 10:34:48
    RMAN-06026: some targets not found - aborting restore
    RMAN-06023: no backup or copy of datafile 8 found to restore
    RMAN-06023: no backup or copy of datafile 7 found to restore
    RMAN-06023: no backup or copy of datafile 6 found to restore
    RMAN-06023: no backup or copy of datafile 5 found to restore
    RMAN-06023: no backup or copy of datafile 3 found to restore
    RMAN-06023: no backup or copy of datafile 1 found to restore

    Le tablespace n'apparait pas dans la PDB alors que le RESTORE est OK : est-ce normal?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SQL> select name from v$tablespace;
    NAME
    ------------------------------
    SYSTEM
    SYSAUX
    UNDOTBS1
    TEMP
    USERS
    APEX_1993195660370985
    6 rows selected.

    Je veux faire un OPEN READ ONLY de la PDB car je pense que le tablespace sera peut-être connu à ce moment là mais ça plante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> alter database open read only;
    alter database open read only
    *
    ERROR at line 1:
    ORA-00704: bootstrap process failure
    ORA-01187: cannot read from file  because it failed verification tests
    ORA-01110: data file 9: '/u01/app/oracle/oradata/orcl12c/orcl/system01.dbf'

    J'arrive finalement à arrêter, redémarrer le CDB$ROOT, la PDB, à les avoir au status OPEN mais impossible de récupérer mon tablespace...

    Voilà, toute aide est la bienvenue :-)

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/04/2015, 21h28
  2. Réponses: 9
    Dernier message: 02/12/2007, 20h54
  3. [Active Directory] Comment tout récupérer avec Delphi ?
    Par avogadro dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 16/11/2007, 11h44
  4. Cheklistbox, comment tout cocher par un simple click ?
    Par gsmdu62 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 01/05/2006, 10h52
  5. [Paradox7>Access2000] Comment tout exporter ?
    Par Invité dans le forum Paradox
    Réponses: 1
    Dernier message: 04/03/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo