Gestion de flashback

1

Concept

Oracle depuis la 10g propose la fonctionnalité « Flashback » qui marche comme la corbeille mac (ou sa copie windows)

En cas de DROP accidentel, on peut restaurer l’objet simplement.

Au-delà, Oracle permet de restaurer le contenu d’une table qui n’a pas été supprimée avec le contenu qu’elle avait à un moment dans le temps.

 

Afin de bénéficier de cette nouvelle fonctionnalité au niveau de la récupération d’une table après un drop, il faut que le paramètre d’initialisation recyclebin soit à ON (valeur par défaut). Ce paramètre dynamique peut s’activer ou se désactiver au niveau system comme au niveau session.

 

Exemple d’utilisation

purge table t1;                         supprime définitivement la table t1

drop table t1 purge;                    drop la table t1 sans placer le segment dans la poubelle

purge dba_recyclebin;                   purge l’ensemble des objets de la poubelle     

FLASHBACK TABLE t1 TO BEFORE DROP;       restore la table t1

 

 

Question : quelle taille occupent les objets dans la poubelle ?

Réponse :  la vue DBA_RECYCLEBIN contient un champ space qui indique un nombre de block, mais une base peut utiliser plusieurs taille de block.

                  le mieux est encore d’utiliser le champs bytes dans DBA_SEGMENTS, cela permet également de ventiler la consommation par tablespace.

 

TABLESPACE_NAME                | Recycle Segments (MB)

------------------------------ | ---------------------

S_TAB_SCHEMA2                  |                   4.0

S_TAB_SCHEMA3                  |                    .4

SCHEMA_ADMIN                     |                  76.0

SCHEMA_TABLES                    |                  96.3

                               | ---------------------

sum                            |                 176.7

 

Script

set feedback off

set timing off

set colsep ' | '

 

col "Recycle Segments (MB)" for 999G999D9

 

break on report

compute sum of "Recycle Segments (MB)" on report

 

select tablespace_name,sum(bytes)/1024/1024 as "Recycle Segments (MB)"

from    dba_segments seg,

        dba_recyclebin rec

where seg.segment_name = rec.object_name

group by tablespace_name

/

 

Question : quels sont les objets dans la poubelle ?

 

OWNER                | ORIGINAL_NAME                    | OBJECT_NAME                    |    DROPSCN | DROPTIME            | CREATETIME          |          MB

-------------------- | -------------------------------- | ------------------------------ | ---------- | ------------------- | ------------------- | -----------

SCHEMA              | CSCLPO                           | BIN$dlpoiak2AX/gRAAUT0MbuA==$0 |   50837706 | 2009-10-20:10:11:24 | 2009-10-20:10:11:23 |         .06

SCHEMA              | CSCLPO1                          | BIN$dlpoiak1AX/gRAAUT0MbuA==$0 |   50837703 | 2009-10-20:10:11:24 | 2009-10-20:10:11:23 |         .06

SCHEMA              | INSCPT                           | BIN$dlpedhbtVZPgRAAUT0MbuA==$0 |   50793127 | 2009-10-20:10:08:35 | 2009-10-19:17:09:59 |         .06

SCHEMA              | SVCMON                           | BIN$dlqSPHYkaOTgRAAUT0MbuA==$0 |   51094238 | 2009-10-20:10:23:04 | 2009-10-19:17:20:56 |         .06

SCHEMA              | SVCMON_K1                        | BIN$dlqSPHYjaOTgRAAUT0MbuA==$0 |   51094220 | 2009-10-20:10:23:04 | 2009-10-19:17:20:56 |         .06

SCHEMA              | TMAT_MATCHING                    | BIN$eDB93wyXLYLgRAAUT0MbuA==$0 |   62969955 | 2009-11-12:18:01:17 | 2009-11-12:18:01:10 |         .06

SCHEMA              | TMAT_MATCHING                    | BIN$eDB9ciTZJgDgRAAUT0MbuA==$0 |   62969802 | 2009-11-12:18:01:10 | 2009-11-12:17:58:26 |         .06

SCHEMA              | TMAT_MATCHING_DIC                | BIN$eDB93wyYLYLgRAAUT0MbuA==$0 |   62970036 | 2009-11-12:18:01:17 | 2009-11-12:18:01:13 |         .06

SCHEMA              | TMAT_R_MONEP                     | BIN$eDF6wLlpT8rgRAAUT0MbuA==$0 |   62984194 | 2009-11-12:19:12:00 | 2009-11-12:19:06:19 |         .06

SCHEMA              | TMAT_R_MONEP                     | BIN$eDIV5V3+JnbgRAAUT0MbuA==$0 |   62991541 | 2009-11-12:19:55:22 | 2009-11-12:19:45:24 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmE+ZXaoTUTgRAAUT0MbuA==$0 |   51471008 | 2009-10-20:18:20:42 | 2009-10-19:17:21:23 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmFGSkmHVfjgRAAUT0MbuA==$0 |   51473089 | 2009-10-20:18:22:55 | 2009-10-20:18:20:42 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmFdkDSDMUrgRAAUT0MbuA==$0 |   51473496 | 2009-10-20:18:29:25 | 2009-10-20:18:22:55 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmFywU6EaRbgRAAUT0MbuA==$0 |   51474067 | 2009-10-20:18:35:21 | 2009-10-20:18:29:25 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmGC1Ci0GbPgRAAUT0MbuA==$0 |   51474295 | 2009-10-20:18:39:50 | 2009-10-20:18:35:21 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmGJyH1LKtvgRAAUT0MbuA==$0 |   51475019 | 2009-10-20:18:41:47 | 2009-10-20:18:39:50 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmGOymkLMI3gRAAUT0MbuA==$0 |   51475442 | 2009-10-20:18:43:11 | 2009-10-20:18:41:47 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dmHx04/dM+fgRAAUT0MbuA==$0 |   51482280 | 2009-10-20:19:10:52 | 2009-10-20:18:43:11 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$doL1g7X8NrXgRAAUT0MbuA==$0 |   53328990 | 2009-10-22:10:34:08 | 2009-10-20:19:10:53 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dpf/ao4zRGLgRAAUT0MbuA==$0 |   53577432 | 2009-10-23:11:40:09 | 2009-10-23:11:37:27 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dpf1vy+TK6zgRAAUT0MbuA==$0 |   53576913 | 2009-10-23:11:37:26 | 2009-10-22:10:34:08 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dpnL1Iq/C73gRAAUT0MbuA==$0 |   53592888 | 2009-10-23:13:48:53 | 2009-10-23:11:40:09 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$dpnN5FF1FcPgRAAUT0MbuA==$0 |   53593468 | 2009-10-23:13:49:28 | 2009-10-23:13:48:53 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$duiBbymOAzXgRAAUT0MbuA==$0 |   54713006 | 2009-10-27:10:43:08 | 2009-10-23:13:49:28 |         .06

SCHEMA              | TMA_DEUREX5                      | BIN$duiOwQ03JrrgRAAUT0MbuA==$0 |   54714666 | 2009-10-27:10:46:51 | 2009-10-27:10:43:08 |         .06

 

Script

col OBJECT_NAME for A30

col "MB" for 999G999D99

select OWNER,ORIGINAL_NAME,OBJECT_NAME,DROPSCN,DROPTIME,CREATETIME,SPACE*8/1024 "MB"

from dba_recyclebin

order by 1,2,3

/

 

 

Question : : quand il existe plusieurs version de la même table (dans l’exemple TMA_DEUREX5) comment restaurer une version en particulier ?

Réponse : il faut utiliser le nom généré par le système

 

SQL> flashback table SCHEMA."BIN$dmFdkDSDMUrgRAAUT0MbuA==$0" to before drop rename to TMA_DEUREX5_restored;

 

Flashback complete.