Oracle 删除用户和表空间

Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下

对于单个user和tablespace 来说, 可以使用如下命令来完成。

步骤一:  删除user

drop user ×× cascade

说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。

步骤二: 删除tablespace

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

但是,因为是供开发环境来使用的db, 需要清理的user 和 table space 很多。

思路

Export出DB中所有的user和tablespace, 筛选出系统的和有用的tablespace,把有用的信息load到一张表中去。

然后写例程循环,把不在有用表的tablespace删掉

1. select username,default_tablespace from dba_users;

2.

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

3.

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;

执行后会报如下错误

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:

好像是被锁了。。

没办法,例程不能写,就只能组出语句执行了。

把需要删除的user, tablespace 导出到Excel. 使用CONCATENATE 组出SQL.

贴到SQLdevelop 批量执行。

整个删除会比较耗时间, 100多个user.  用了12个小时左右。

如要找datafile的具体位置,可以使用

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

SQL code
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

时间: 2024-10-10 15:05:19

Oracle 删除用户和表空间的相关文章

oracle删除用户和表空间

1.网站测试版本,需要备份本地数据,导入到服务器上.在服务器上创建了表空间和若干个用户.现在删除无用的用户 (1)查询出来所有的用户和对应的表空间:select username,default_tablespace from dba_users (2)删除某一个用户:drop user scsc0819 cascade;其中scsc0819是用户名 2.服务器上无效的表空间也需要删除. (1)查询出来所有的表空间名字和对应的文件名字:select  tablespace_name,file_n

Oracle 删除用户以及表空间

1.查看表空间以及对应的名字 SQL> SELECT FILE_NAME,TABLESPACE_NAME FROM dba_data_files; 2.查询系统用户以及对应的表空间 SQL> select username,default_tablespace from dba_users; 3.查询系统的表空间 SQL> select FILE_NAME,TABLESPACE_NAME from dba_data_files; 4.删除用户 SQL> drop user doii

oracle删除用户及其表空间

删除表空间:可以先将其offlinealter tablespace xx offline;将磁盘上的数据文件一同删除drop tablespace xxx including contents and datafiles; 删除用户:drop user xxx;如果用户的schema中有objects ,需要加cascade参数,即drop user xxx cascade; 原文地址:https://www.cnblogs.com/antis/p/10345909.html

oracle删除用户及表空间,导入用户和数据

drop user xxx cascade; drop tablespace xxx including contents and datafiles; create tablespace xxx datafile 'E:\oracle\product\10.2.0\oradata\ts\xxx.dbf' size 100M autoextend on next 10m maxsize unlimited; create user xxx identified by "ppp" def

Oracle创建,删除用户与表空间

1.创建表空间与用户 a:创建数据表空间 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\Test\xyrj_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; b:创建用户并指定表空间 create user username identified by password d

Oracle 创建表空间、临时表空间、创建用户并指定表空间、授权,删除用户及表空间

/* 说明:若已经存在相应的用户和表空间,则需要先删除相应的用户和表空间 然后再全部重新建立 */ --删除用户 drop user USERNAME cascade; --删除表空间 drop tablespace DATA_TEMP including contents and datafiles; drop tablespace DATA including contents and datafiles; --创建临时表空间 create temporary tablespace DATA

Oracle之用户和表空间

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 23.0px "PingFang SC" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px "PingFang SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px "PingFang SC"; min-height: 26.0px

oracle创建用户、表空间、临时表空间、分配权限步骤详解

首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by GPMGT; --查看所有用户所在表空间select username,default_tablespace from dba_users; --查询所有表空间路径select * from dba_data_files ;--创建一个表空间create tablespace GPMGT_DATA

oracle删除用户所有表

在删除数据表的时候往往遇到外键约束无法删除的情况,我们可以通过以下几步将数据库表删除,建议在删除库之前先对数据库进行备份,养成良好习惯. 1.删除外键 --查询用户所有表的外键,owner条件为userselect * from user_constraints c where c.constraint_type = 'R' and c.owner = 'USER';--这里往往owner系统内为大写 --删除用户所有表的外键,owner条件为user select 'alter table '