FLASHBACK DATABASE

Depuis la version Oracle 10g, il est possible de définir une base de données en mode « FLASHBACK », ce qui vous permet, en cas d’erreur humaine majeure, de remettre la base dans un état antérieur à l’erreur. Cette fonctionnalité gère les conservations de modifications en sauvegardant les blocs « UNDO » lorsqu’’ils sont entrés dans la période « UNDO_RETENTION », comme les fichiers journaux sont sauvegardés dans les fichiers de journaux archivés. La base de données est en mode « FLASHBACK » ; vous pouvez visualiser l’état de votre base en interrogeant les vues : « V$DATABASE » et « V$FLASHBACK_DATABASE_STAT ».

en savoir

SYS@agate>select begin_time, end_time ,flashback_data flashback,

  2  db_data db, redo_data redo, estimated_flashback_size  estimated

  3  from v$flashback_database_stat;

 

BEGIN_TI END_TIME  FLASHBACK         DB       REDO  ESTIMATED

-------- -------- ---------- ---------- ---------- ----------

16/03/14 16/03/14   11034624   17481728    5747200          0

 

SYS@agate>select dbid, name, flashback_on, current_scn from v$database;

 

      DBID NAME     FLASHBACK_ON       CURRENT_SCN

---------- -------- ------------------ -----------

 904870336 AGATE    YES                   12679583

La syntaxe de la commande « FLASHBACK DATABASE » est comme suit :

FLASHBACK DATABASE TO [BEFORE]

      {{ SCN | TIMESTAMP} valeur | RESTORE POINT nom };

La commande « FLASHBACK DATABASE » ne peut pas restaurer les fichiers effacés ou perdus, de même elle ne va pas dimensionner les fichiers comme dans leur état antérieur. Dans le cas de perte des fichiers, la commande « FLASHBACK DATABASE » peut restaurer les fichiers existants et pour les autres il va falloir exécuter leur restauration à l’aide des autres outils. Cette démarche est présentée dans le Module « La récupération avancée ».

SYS@agate>select retention_target retention, flashback_size taille,

  2  estimated_flashback_size estimation , oldest_flashback_scn scn,

  3  to_timestamp(oldest_flashback_time) temp

  4  from  v$flashback_database_log;

 

 RETENTION     TAILLE ESTIMATION        SCN TEMP

---------- ---------- ---------- ---------- -----------------------

      7200   95649792 1296875520   12675380 16/03/14 00:00:00

 

SYS@agate>select group# g,  sequence# s, member

  2  from v$logfile join v$log using (group#);

 

  G    S MEMBER

--- --- ------------------------------------------------------------

  1 186 C:\APP\ORACLE\ORADATA\AGATE\ONLINELOG\O1_MF_1_64056DH2_.LOG

  2 187 C:\APP\ORACLE\ORADATA\AGATE\ONLINELOG\O1_MF_2_64056XWR_.LOG

...

SYS@agate>create restore point point_rest01 guarantee flashback database;

 

Point de restauration créé.

 

SYS@agate>select dbid, name, flashback_on, current_scn from v$database;

 

      DBID NAME     FLASHBACK_ON       CURRENT_SCN

---------- -------- ------------------ -----------

 904870336 AGATE    YES                   12715156

 

SYS@agate>drop user stag cascade;

 

Utilisateur supprimé.

 

SYS@agate>shutdown immediate

...

SYS@agate>flashback database to restore point point_rest01;

 

Flashback terminé.

 

SYS@agate>alter database open resetlogs;

 

Base de données modifiée.

 

SYS@agate>select group# g,  sequence# s, member

  2  from v$logfile join v$log using (group#);

 

  G    S MEMBER

--- --- ------------------------------------------------------------

  1   1 C:\APP\ORACLE\ORADATA\AGATE\ONLINELOG\O1_MF_1_64056DH2_.LOG

  2   0 C:\APP\ORACLE\ORADATA\AGATE\ONLINELOG\O1_MF_2_64056XWR_.LOG

...

SYS@agate>select count(*) from stag.commandes;

 

  COUNT(*)

----------

       830

La restauration de la base au point de restauration à été exécutée ; dans l’exemple, on utilise le point de sauvegarde, mais le « SCN=12715156 » peut être également utilisé.

Le FLASHBACK et RMAN

La base de données est en mode « FLASHBACK » et vous pouvez visualiser l’état de votre base en interrogeant les vues : « V$DATABASE » et « V$FLASHBACK_DATABASE_STAT ».

SYS@agate>select begin_time, end_time ,flashback_data flashback,

  2  db_data db, redo_data redo, estimated_flashback_size  estimated

  3  from v$flashback_database_stat;

 

BEGIN_TI END_TIME  FLASHBACK         DB       REDO  ESTIMATED

-------- -------- ---------- ---------- ---------- ----------

04/08/10 04/08/10    3424256    1867776    1866752          0

04/08/10 04/08/10    7716864   11231232    4640768  670531584

 

SYS@agate>select dbid, name, flashback_on, current_scn from v$database;

 

      DBID NAME     FLASHBACK_ON       CURRENT_SCN

---------- -------- ------------------ -----------

 907225745 AGATE     YES                     449670

 

SYS@agate>select tablespace_name, file_id from dba_data_files;

 

TABLESPACE_NAME                   FILE_ID

------------------------------ ----------

...

DTP_STAR                                5

ITP_STAR                                6

DTP_TRAN                                7

...

 

SYS@agate>drop tablespace DTP_TRAN including contents;

 

Tablespace supprimé.

 

SYS@agate>drop tablespace DTP_STAR including contents;

 

Tablespace supprimé.

 

SYS@agate>shutdown immediate;

SYS@agate>startup mount;

Instance ORACLE lancée.

...

Base de données montée.

 

SYS@agate>flashback database to scn 449670;

 

Flashback terminé.

 

SYS@agate>alter database open resetlogs;

 

Base de données modifiée.

 

SYS@agate>select tablespace_name, file_id f, file_name from dba_data_files;

 

TABLESPACE_NAM  F FILE_NAME

-------------- -- --------------------------------------------------

...

DTP_STAR        5 C:\APP\ORACLE\PRODUCT\11.2.0\DB_HOME\DATABASE\UNNAMED00005

ITP_STAR        6 +GD_DONNEES/agate/datafile/itp_star.272.726021505

DTP_TRAN        7 C:\APP\ORACLE\PRODUCT\11.2.0\DB_HOME\DATABASE\UNNAMED00007

...

La syntaxe de la commande « FLASHBACK DATABASE » est comme suit :

FLASHBACK DATABASE {

    TO {{SCN|TIMESTAMP} valeur | RESTORE POINT nom_point}

   | TO BEFORE {{SCN|TIMESTAMP} | RESETLOGS}};

La commande « FLASHBACK DATABASE » ne peut pas restaurer les fichiers effacés ou perdus ; de même elle ne va pas dimensionner les fichiers comme dans leur état antérieur. Dans le cas de perte des fichiers, la commande « FLASHBACK DATABASE » peut récupérer les fichiers existants, et pour les autres il va falloir exécuter leur restauration à l’aide de RMAN.

C:\>rman target sys/P#sw0rd3@agate catalog rman/rman@saphir

connecté à la base de données cible : AGATE (DBID=907225745)

connecté à la base de données du catalogue de récupération

RMAN> spool log to recover_until.txt append

RMAN> run {

2>  set newname for datafile 5  to  new;

3>  set newname for datafile 7  to  new;

4>  restore datafile 5,7;

5>  switch datafile all;

6>  recover datafile 5,7;

7>  sql 'ALTER DATABASE datafile 5 online';

8>  sql 'ALTER DATABASE datafile 7 online';}

RMAN> spool log off

 

RMAN> report schema;

Etat du schéma de base de données dont le db_unique_name est AGATE

Liste des fichiers de données permanents

===========================

File Size(MB) Tablespace           RB segs Datafile Name

---- -------- -------------------- ------- ------------------------

1    700      SYSTEM               YES     +GD_DONNEES/agate/datafile/system.265.726012381

2    600      SYSAUX               NO      +GD_DONNEES/agate/datafile/sysaux.266.726012395

3    300      UNDOTBS1             YES     +GD_DONNEES/agate/datafile/undotbs1.267.726012403

4    5        USERS                NO      +GD_DONNEES/agate/datafile/users.269.726012417

5    640      DTP_STAR             NO      +GD_DONNEES/agate/datafile/dtp_star.271.726117555

6    640      ITP_STAR             NO      +GD_DONNEES/agate/datafile/itp_star.272.726021505

7    640      DTP_TRAN             NO      +GD_DONNEES/agate/datafile/dtp_tran.273.726117555

8    640      ITP_TRAN             NO      +GD_DONNEES/agate/datafile/itp_tran.274.726021525

9    50       CATALOGUE_RMAN       NO      +GD_DONNEES/agate/datafile/catalogue_rman.275.726052467

Liste des fichiers temporaires

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

---- -------- -------------------- ----------- --------------------

1    429      TEMP                 33554431    +GD_DONNEES/agate/tempfile/temp.268.726012407

La restauration et récupération des deux fichiers est exécutée comme la récupération incomplète que vous avez étudiée auparavant. L’avantage de cette méthode est que seuls les deux fichiers ont été restaurés et pas la totalité de la base de données.