Gestion de flashback
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.