Bonjour,
Ayant plein de soucis avec mes tables j'aimerais toutes les effacer. Existe t il une commande pour effacer toutes les tables d'un coup ?
Bonjour,
Ayant plein de soucis avec mes tables j'aimerais toutes les effacer. Existe t il une commande pour effacer toutes les tables d'un coup ?
J'appliquerai la démarche suivante :
- un curseur qui parcourt le contenu de la table système dba_tables (si vous avez les droits suffisants)
- pour chaque ligne récupérée par ce curseur, je construis dynamiquement une requête chargée d'effectuer la suppression de la table "courante" : DROP TABLE <table récupérée par le curseur>
- j'exécute cette requête via EXECUTE IMMEDIATE.
Cependant, par sécurité, j'écrirais plutôt la requête dynamique sur la sortie standard que je sauvegarderais dans un fichier texte.
Ainsi, je pourrais ouvrir ce fichier et vérifier son contenu et, une fois seulement que je l'aurais validé, je le lancerais sous SQLPlus.
Oui mais attention, filtrez avec la colonne OWNER. Car s'il n'y pas de filtre:un curseur qui parcourt le contenu de la table système dba_tables
- si vous avez les droits DBA vous risquez de supprimer des tables du dictionnaire
- si vous n'avez pas les droits DBA, vous aurez une erreur à l'exécution en raison de privilèges insuffisants.
Je conseillerais plutôt d'utiliser USER_TABLES dans chaque schéma.
Si le schéma ne contient rien d'autre que des tables, il est encore plus rapide de supprimer le schéma (DROP USER xx CASCADE) puis de le recréer.
Est-ce que cela ne supprimera pas aussi les séquences ?Envoyé par SheikYerbouti
DROP USER toto CASCADE en effet supprime tous les objets appartenant a l'utilisateur toto (donc aussi les séquences) ainsi que le compte Oracle toto.
Je rajouterais une supression en amont de toutes les contraintes référentielles.
Partager