Supprimer tout le contenu d'un schéma dans Oracle
Est possible de supprimer tous les contenus dans le schéma Oracle? J'ai trouvé ce script:
Begin
for c in (select table_name from user_tables) loop
execute immediate ('drop table '||c.table_name||' cascade constraints);
end loop;
End;
Mais je voudrais savoir si il y a quelque chose de tout laisser tomber dans le schéma, les index,les tables,les contraintes... mais pas le schéma (baisse de l'utilisateur ...).
Grâce.
source d'informationauteur zerosssa
Vous devez vous connecter pour publier un commentaire.
Normalement, il est plus simple de supprimer et ajouter l'utilisateur. Cette méthode est recommandée si vous avez du système ou sysdba l'accès à la base de données.
Si vous n'avez pas de système de niveau d'accès, et que vous voulez frotter votre schéma, le sql suivant va produire une série de déposer relevés, qui peut ensuite être exécuté.
Puis, j'ai l'habitude de vider la corbeille pour vraiment nettoyer les choses. Pour être honnête, je ne vois pas beaucoup d'utilisation pour oracle de la corbeille, et souhaite que je pourrais le désactiver, mais de toute façon:
Cela va produire une liste de drop. Pas tous d'entre eux sera execute - si vous déposez avec cascade, l'abandon de la PK_* indices de l'échec. Mais à la fin, vous aurez une assez propre schéma. Confirmer avec:
Aussi, juste pour ajouter, le Pl/sql bloc dans votre question permet de supprimer uniquement les tables, il n'est pas de supprimer tous les autres objets.
ps: Copié à partir d'un site web, a été utile pour moi. Testé et de travail comme un charme.
Oui, vous pouvez. Vous pouvez déposer de l'utilisateur et donc de déposer les objets de schéma.
La CHUTE de déclaration de l'UTILISATEUR est utilisé pour supprimer un utilisateur de la base de données Oracle et supprimer tous les objets qui appartiennent à l'utilisateur.
Cette déclaration ne s'exécuter correctement et de chute de l'utilisateur appelé TestDB seulement si TestDB n'est pas propriétaire de tous les objets de son schéma. Objet dans le sens des tables et des vues etc.
Si elle contient tous les objets, puis après l'exécution de la CHUTE de déclaration de l'UTILISATEUR, vous obtiendrez le message d'erreur ci-dessous
Si TestDB n'propres objets dans son schéma, vous devez exécuter le menu DÉROULANT ci-dessous instruction de l'UTILISATEUR à la place:
Cette déclaration fera tomber tous les objets appartenant TestDB, et toutes les contraintes d'intégrité référentielle sur TestDB objets seraient également supprimées.
Suivantes SQLplus script génère les instructions SQL nécessaires pour supprimer tous les objets de schéma de l'utilisateur souhaité:
Le script fonctionne à 100%, pour moi, qu'est - mais si, pour une raison quelconque, il n'est pas complet pour vous, alors il est facilement améliorée en utilisant une machine virtuelle (VM) comme suit:
Si échec de l'étape 6, puis vous avez besoin pour identifier les objets restants à la prévention de votre utilisateur d'être supprimés et les ajouter dans le script ci-dessus. Répétez jusqu'à ce que votre utilisateur gouttes (ie. votre script est complet) puis enregistrez votre script
De restaurer votre machine virtuelle pour votre instantané et répétez les étapes 3 et 4 (à l'aide de votre script de mise à jour) - et vous devriez maintenant avoir un 100% schéma vide.
C'est ce que j'ai utilisé: