Heim > php教程 > PHP开发 > Hauptteil

Detaillierte Einführung in das Löschen von Benutzern und Tabellenbereichen in Oracle

高洛峰
Freigeben: 2017-01-06 11:37:22
Original
1585 Leute haben es durchsucht

Oracle löscht Benutzer und Tablespaces

Oracle wird seit langem verwendet und viele neue Benutzer und Tablespaces wurden hinzugefügt

Für eine Einzelbenutzer und Tabellenbereich können Sie mit dem folgenden Befehl abschließen.

Schritt 1: Benutzer löschen

drop user ×× cascade
Nach dem Login kopieren

Hinweis: Durch das Löschen eines Benutzers werden nur die Schemaobjekte unter dem Benutzer gelöscht, nicht jedoch der entsprechende Tablespace.

Schritt 2: Tabellenbereich löschen

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
Nach dem Login kopieren

Da es sich jedoch um eine Datenbank für die Entwicklungsumgebung handelt, müssen viele Benutzer- und Tabellenbereiche bereinigt werden.

Idee:

Alle Benutzer und Tablespaces in die Datenbank exportieren, System- und nützliche Tablespaces herausfiltern und nützliche Informationen in eine Tabelle laden. Schreiben Sie dann eine Routineschleife, um den Tablespace zu löschen, der nicht in der nützlichen Tabelle enthalten ist

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)
);
Nach dem Login kopieren

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;
Nach dem Login kopieren


Nach der Ausführung wird der folgende Fehler gemeldet

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:
Nach dem Login kopieren


Es scheint gesperrt zu sein. .

Es gibt keine Möglichkeit, die Routine kann nicht geschrieben werden, also können wir nur Anweisungen formulieren und ausführen.


Exportieren Sie die Benutzer und Tablespaces, die gelöscht werden müssen, nach Excel. Verwenden Sie CONCATENATE, um die SQL zu gruppieren.


Posten Sie sie zur Stapelausführung in SQLdevelop.

Die gesamte Löschung wird zeitaufwändig sein. Bei mehr als 100 Benutzern dauerte es etwa 12 Stunden.

Wenn Sie den spezifischen Speicherort der Datendatei ermitteln möchten, können Sie

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


SQL-Code

< verwenden 🎜>

--Leere Tabellenbereiche löschen, die jedoch keine physischen Dateien enthalten

drop tablespace tablespace_name;
Nach dem Login kopieren

--Nicht leere Tabellenbereiche löschen , aber keine physischen Dateien enthalten. Datei

drop tablespace tablespace_name including contents;
Nach dem Login kopieren

– leeren Tabellenbereich löschen, einschließlich physischer Datei

drop tablespace tablespace_name including datafiles;
Nach dem Login kopieren

--Löschen Sie nicht leere Tabellenbereiche, einschließlich physischer Dateien

drop tablespace tablespace_name including contents and datafiles;
Nach dem Login kopieren

--Wenn andere Tabellenbereiche Wenn die Tabelle in Fremdschlüssel und andere Einschränkungen aufweist, die mit den Feldern der Tabelle in diesem Tabellenbereich verknüpft sind, müssen Sie CASCADE CONSTRAINTS hinzufügen

Vielen Dank fürs Lesen, ich hoffe, dass dies möglich ist Helfen Sie allen, vielen Dank für Ihre Unterstützung dieser Website!

drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
Nach dem Login kopieren
Weitere Oracle-bezogene Artikel zum detaillierten Löschen von Benutzern und Tabellenbereichen finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage