Suppression BDD avec la corbeille Oracle Recyclebin
Le 21/09/2020
Données / Sécurité
Oracle
3 minutes de lecture
Partage
Suppression BDD avec la corbeille Oracle Recyclebin
Dans cet article, je souhaite partager un exemple de suppression d'une table en base en activant la corbeille Oracle Recyclebin afin de pouvoir, le cas échéant, avoir la possibilité de restaurer des éléments supprimés.
Pour illustrer cette exemple, voici le contexte de tables liées présentes en base :
CREATE TABLE Article (
article_id NUMBER PRIMARY KEY,
article_name varchar2(50),
code VARCHAR(50) NOT NULL,
description VARCHAR(50) NOT NULL
);
CREATE TABLE Commande (
commande_id NUMBER PRIMARY KEY,
article_id NUMBER NOT NULL,
quantite INTEGER NOT NULL,
prix DEC(7,2) NOT NULL,
CONSTRAINT fk_article
FOREIGN KEY (article_id)
REFERENCES Article(article_id) ON DELETE CASCADE
);
Lorsqu'on souhaite supprimer la table Article, Oracle nous répond naturellement l'erreur suivante :
DROP TABLE Article; -- Revoie une erreur ORA-02449: clés uniques/primaires de la table référencées par des clés étrangères
Avant de réaliser la suppression de la table, on va d'abord s'assurer d'activer la corbeille comme suit :
SHOW PARAMETER RECYCLEBIN; -- Affiche si la corbeille est activée ou non
NAME TYPE VALUE
---------- ------ -----
recyclebin string OFF
ALTER SESSION SET RECYCLEBIN= ON; -- Active l'utilisation de la corbeille pour la durée de la session
Quand on supprime une table, celle-ci et tous ses objets dépendants seront donc envoyés vers la "Recyclebin" (index, trigger, contraintes, lobs, partition). Par contre, la suppression d'un index ne l'envoie pas dans la corbeille. Les index ne vont dans la corbeille que lorsqu'ils sont des objets dépendants des tables que l'on supprime.
Pour supprimer une table, ainsi que ses contraintes liées, on rajoutera l'option "CASCADE CONSTRAINTS" comme ceci :
DROP TABLE Article CASCADE CONSTRAINTS;
On peut alors afficher le contenu de la corbeille, via ces 2 possibilités :
SELECT * FROM RECYCLEBIN; -- affiche des objets présents dans la corbeille
SHOW RECYCLEBIN; -- affiche des objets présents dans la corbeille
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
------------- ------------------------------ ----------- -------------------
SYS_C0014553 BIN$mYTM4IQKomXgUz2zEaxdEw==$0 INDEX 2019-12-12:16:57:20
ARTICLE BIN$mYTM4IQLomXgUz2zEaxdEw==$0 TABLE 2019-12-12:16:57:20
Pour restaurer la table souhaitée (et ses objets liés), il suffit alors de lancer cette commande :
FLASHBACK TABLE Article TO BEFORE DROP;
La suppression de la table est bien "rollbackée" et la contrainte de clé étrangère sur la table "Commande" a bien été ré-affectée.
Pour finir, voici quelques commandes pour "purger" certaines données :
PURGE TABLE Article; -- Suppression de la table et de ses objets liés présents dans la corbeille
PURGE RECYCLEBIN; -- Suppression définitive des objets présents dans la corbeille
DROP TABLE table_name PURGE; -- Suppression définitive sans passer par la corbeille
Partage
Gardez un oeil sur tout
Recevez des notifications dès la publication d’un nouvel article et restez informé de l’actualité Cloud !
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.