Récupération rapide d’une table …dans la poubelle (RECYCLE BIN)
Administration Oracle, Divers Ajouter un commentaire
Les suppressions de tables, ne sont plus désormais physiques et définitives, mais mettent simplement l’objet ? la corbeille (RECYCLE BIN). Tant que cette dernière n’est pas vidée, il est possible de récupérer l’objet supprimé.
Attention ! pour pouvoir être utilisée la poubelle …doit être active. On peut vérifier le paramètre d’initilalisation : SQL> SHOW PARAMETER RECYCLE , qui doit être ? ‘ON’.
Attention encore plus !! les commandes de gestion de la poubelle ne sont pas des commandes SQL , mais SQL*Plus donc même si vous êtes en 10g mais avec un client autre que SQL+ 10g , les commandes ne seront pas reconnues. Vous aurez des messages du genre,
- sous i*SQLPlus : Command beginning “purge tabl…” is not available in iSQL*Plus
- sous SQLPlus : SP2-0734: unknown command beginning “purge scot…” - rest of line ignored.
Des infos sur le contenu de la poubelle dans le dictionnaire…
Les informations concernant la corbeille peuvent être consultées dans le dictionnaire :
SQL> SHOW RECYCLEBIN
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
————- ————— ———– ———
T1 BIN$EkKm2r93vZfgQKjAhw1XeA==$0 TABLE 2006-04-25:15:51:52
ou via les tables USER_RECYCLEBIN et DBA_RECYCLEBIN.
exemple
SQL> select original_name nom, object_name “nom interne”,
operation, createtime “date création “,
droptime “date suppression “, can_undrop “récupérable ? “, can_purge “purgeable ?”
FROM user_recyclebinNOM NOM INTERNE OPERATION date création date suppression récupérable? purgeable?
— —————————— ——— ——————- ——————- ———— ———-
T1 BIN$Ejia7J3wZRXgQKjAhw0prg==$0 DROP 2006-04-25:15:10:17 2006-04-25:15:10:22 YES YES
T2 BIN$Ejia7J3vZRXgQKjAhw0prg==$0 DROP 2006-04-25:15:09:30 2006-04-25:15:09:35 YES YES
note : les colonnes CREATETIME et DROPTIME sont des…VARCHAR (?)
exemples de récupération
SQL> FLASHBACK TABLE T2 TO BEFORE DROP
SQL> FLASHBACK TABLE “BIN$Ejia7J3vZRXgQKjAhw0prg==$0″ TO BEFORE DROP
note : on peut donc également utiliser le nom interne ET CE QUELQUESOIT LA COMMANDE SQL !
Il est conseillé de l’encadrer par des guillemets pour masquer les caractères spéciaux
Une table T1 peut avoir été supprimée plusieurs fois, et apparaitre plusieurs fois dans la corbeille.
Pour éviter toute ambiguité, il faut vérifier le contenu de la poubelle avant récupération
et utiliser le nom interne le cas échéant plutot que le nom logique.
exemple
SQL> create table t1 (n integer);
SQL> drop table t1;
SQL> create table t1(new_n integer);
SQL> drop table t1;
et dans la corbeille on a :
NOM nom interne OPERATION date création date suppression
T1 BIN$EkKm2r92vZfgQKjAhw1XeA==$0 DROP 2006-04-25:15:51:14 2006-04-25:15:51:28
T1 BIN$EkKm2r93vZfgQKjAhw1XeA==$0 DROP 2006-04-25:15:51:44 2006-04-25:15:51:52SQL> desc “BIN$EkKm2r93vZfgQKjAhw1XeA==$0″
Name Type
NEW_N NUMBER(38)SQL> –c’est bien celle que je veux recuperer…dont acte
SQL> FLASHBACK TABLE “BIN$EkKm2r93vZfgQKjAhw1XeA==$0″ TO BEFORE DROP;
Suppression permanente
On peut supprimer une table de la corbeille avec la commande ‘PURGE’ :
SQL> PURGE TABLE T3
ou indirectement en utilisant des commandes affectant le trablespace utilisateur :
SQL> PURGE TABLESPACE users; — purge tous les objets du tablespace
SQL> PURGE TABLESPACE users USER scott; –purge tous les objets de SCOTT du tablespace USERS
ou vider en une fois la poubelle utilisateur ou la poubelle générale :
SQL> PURGE recyclebin;
SQL> PURGE dba_recyclebin;
Eviter la poubelle
On peut également supprimer physiquement et directement une table, en évitant de la conserver dans la corbeille donc, avec l’option ‘PURGE’ de la commande ‘DROP TABLE’
SQL> DROP TABLE T5 PURGE
Ou invalider l’utilisation de la poubelle de manière transversale,
grace au paramètre d’initialisation ‘RECYCLEBIN’
SQL> show parameter recyclebin
NAME TYPE VALUE
recyclebin string ONSQL> ALTER SYSTEM SET recyclebin = OFF;
System AlteredSQL> show parameter recyclebin
NAME TYPE VALUE
recyclebin string OFF