Oracle 删除用户和表空间详细介绍

所属分类: 数据库 / MsSql 阅读数: 215
收藏 0 赞 0 分享

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;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

sql 分组查询问题

sql 分组查询问题,需要的朋友可以参考下。
收藏 0 赞 0 分享

MSSQL 数据库备份和还原的几种方法 图文教程

MSSQL 数据库备份和还原的几种方法小结,配有图文,大家看了就知道了。
收藏 0 赞 0 分享

GridView自定义分页的四种存储过程

首先要说说为什么不用GridView的默认的分页功能,GridView控件并非真正知道如何获得一个新页面,它只是请求绑定的数据源控件返回适合规定页面的行,分页最终是由数据源控件完成。
收藏 0 赞 0 分享

Godaddy 导入导出MSSQL数据库的实现步骤

可以从限制文件中导入SQL共享服务器数据库。如果想把存放在其他地方的数据导入,需要先把其内容拷到限制文件中。(
收藏 0 赞 0 分享

得到自增列的下一个会插入的id

怎么得到自增列的下一个会插入的id
收藏 0 赞 0 分享

几个简单的基本的sql语句

这个是从网上看到的。。。COPY一下。。有时候忘记了。。
收藏 0 赞 0 分享

sqlserver 自动备份所有数据库的SQL

可自动备份除系统数据库外的所有数据库。备份文件的周期保存周期可以更改。
收藏 0 赞 0 分享

SQL Server 服务器优化技巧浅谈

数据文件和日志文件的操作会产生大量的I/O。在可能的条件下,日志文件应该存放在一个与数据和索引所在的数据文件不同的硬盘上以分散I/O,同时还有利于数据库的灾难恢复。
收藏 0 赞 0 分享

sql2005 存储过程分页示例代码

sql2005分页存储过程示例
收藏 0 赞 0 分享

union组合结果集时的order问题

如果能确定各查询结果不会有重复的项,最好就带上all,因为这样还是可以提高一些效率的。
收藏 0 赞 0 分享
查看更多