Maison  >  Article  >  php教程  >  Introduction détaillée à Oracle pour la suppression d'utilisateurs et d'espaces table

Introduction détaillée à Oracle pour la suppression d'utilisateurs et d'espaces table

高洛峰
高洛峰original
2017-01-06 11:37:221579parcourir

Oracle supprime les utilisateurs et les tablespaces

Oracle est utilisé depuis longtemps et de nombreux nouveaux utilisateurs et tablespaces ont été ajoutés

Pour un. utilisateur unique et espace de table, vous pouvez utiliser la commande suivante pour terminer.

Étape 1 : Supprimer l'utilisateur

drop user ×× cascade

Remarque : La suppression d'un utilisateur supprime uniquement les objets de schéma sous l'utilisateur, mais ne supprime pas l'espace de table correspondant.

Étape 2 : Supprimer l'espace table

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

Cependant, comme il s'agit d'une base de données pour l'environnement de développement, de nombreux espaces utilisateur et table doivent être nettoyés.

Idée :

Exportez tous les utilisateurs et les tablespaces de la base de données, filtrez le système et les tablespaces utiles et chargez les informations utiles dans une table. Ensuite, écrivez une boucle de routine pour supprimer le tablespace qui n'est pas dans la table utile

1 select username,default_tablespace from dba_users;

2. >

3.
create table MTUSEFULSPACE
(
  ID Number(4) NOT NULL PRIMARY KEY,
  USERNAME varchar2(30),
  TABLESPACENAME varchar2(60),
  OWNERNAME varchar2(30)
);

declare icount number(2);
    tempspace varchar2(60);
begin
 for curTable in (select username as allusr,default_tablespace as alltblspace from dba_users)
 loop
 tempspace :=curTable.alltblspace;
 dbms_output.put_line(tempspace);
 select count(TABLESPACENAME) into icount from MTUSEFULSPACE where TABLESPACENAME = tempspace;
 if icount=0 then
  DROP TABLESPACE tempspace INCLUDING CONTENTS AND DATAFILES;
 end if;
 commit;
 end loop;
end;


Après l'exécution, l'erreur suivante sera signalée

ORA-06550: 第 10 行, 第 5 列:
PLS-00103: 出现符号 "DROP"在需要下列之一时:
 begin case declare exit
  for goto if loop mod null pragma raise return select update
  while with <an identifier>
  <a double-quoted delimited-identifier> <a bind variable> <<
  close current delete fetch lock insert open rollback
  savepoint set sql execute commit forall merge pipe
06550. 00000 - "line %s, column %s:\n%s"
*Cause:  Usually a PL/SQL compilation error.
*Action:


Il semble verrouillé. .

Il n'y a aucun moyen, la routine ne peut pas être écrite, nous pouvons donc seulement formuler des instructions et les exécuter.


Exportez l'utilisateur et le tablespace qui doivent être supprimés vers Excel. Utilisez CONCATENATE pour regrouper le SQL.


Publiez-le sur SQLdevelop pour une exécution par lots.

La suppression complète prendra du temps. Cela a pris environ 12 heures pour plus de 100 utilisateurs.

Si vous souhaitez trouver l'emplacement spécifique du fichier de données, vous pouvez utiliser le

select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;


Code SQL


--Supprimer les espaces table vides, mais ne contenant pas de fichiers physiques

drop tablespace tablespace_name;


--Supprimer les espaces table non vides , mais ne contiennent pas de fichiers physiques Fichier

drop tablespace tablespace_name including contents;


--supprime l'espace de table vide, y compris le fichier physique

drop tablespace tablespace_name including datafiles;


--Supprimer les tablespaces non vides, y compris les fichiers physiques

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;


--Si d'autres tablespaces Si la table a des clés étrangères et d'autres contraintes associées aux champs de la table dans cet espace table, vous devez ajouter des CONTRAINTES EN CASCADE

Merci d'avoir lu, j'espère que cela pourra aidez tout le monde, merci pour votre soutien à ce site !
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

Pour plus d'articles sur Oracle sur la suppression d'utilisateurs et d'espaces de table en détail, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn