oracle 删除表空间及数据文件方法

Posted EOS666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 删除表空间及数据文件方法相关的知识,希望对你有一定的参考价值。

oracle 11g版本,创建数据库表空间,默认单个数据文件最大为32G,如果数据文件大于32G,可以增加数据文件。

 

--删除空的表空间,但是不包含物理文件

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;

如果删除表空间报 ORA-00959 错误

那就确认一下表空间是否还存在:

SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM USER_TABLESPACES;

 表空间已经不存在了,那就直接删除 rm -rf  *.dbf 文件。 


以system用户登录,查找需要删除的用户:

--查找用户
select * from dba_users;
--查找工作空间的路径
select * from dba_data_files; 
--删除用户
drop user 用户名称 cascade;
--删除表空间
drop tablespace 表空间名称 including contents and datafiles cascade constraint;

例如:删除用户名成为ABC,表空间名称为ABC

--删除用户,及级联关系也删除掉
drop user ABC cascade;
--删除表空间,及对应的表空间文件也删除掉
drop tablespace ABC including contents and datafiles cascade constraint;

 

删除无任何数据对象的表空间:
首先使用PL/SQL界面化工具,或者使用oracle自带的SQL PLUS工具,连接需要删除的表空间的oracle数据局库。
确认当前用户是否有删除表空间的权限,如果没有 drop tablespace,请先用更高级的用户(如sys)给予授权或者直接用更高级的用户。
用drop tablespace xxx ,删除需要删除的表空间。
删除有任何数据对象的表空间
使用drop tablespace xxx including contents and datafiles;来删除表空间。
注意事项:
如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示ora-01911错误

以上是关于oracle 删除表空间及数据文件方法的主要内容,如果未能解决你的问题,请参考以下文章

怎么删除用户,表空间,数据文件

oracle怎样恢复删除的数据文件

oracle只删除表如何再删除文件还在运行

oracle 11g 手动删除表空间文件导致数据库报错处理方法

表空间及组成表空间的物理文件

删除oracle用户及相关表空间和数据