oracle下正确删除表空间的方法

Posted

tags:

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

   Oracle因为本身的多重验证机制所有在删除表空间时不像mysql中删除database一样,可以通过外部的删除直接删除掉database文件夹就可以删除掉database,当然这两者是2种不同的东西,在此仅用于举例说明。在Oracle中表空间相当于系统中的硬盘,Oracle可以通过修改配置表空间来对Oracle下的数据进行存储,所以在Oracle下表空间是非常重要的,尤其是在表空间文件处理不当都会造成Oracle的不稳定,在此就说一说如何正确的删除Oracle的表空间。

   删除表空间时,需要确定在没有数据使用时或者该表空间的数据确定不要时候才能继续,所以在任何删除之前,需要让表空间离线,如下:

SQL> alter tablespace tablespace_name offline;

在使表空间正确的离线后,才能对表空间进行正确的删除的操作,而删除表空间又分为几种情况,使用也很简单,如下:

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

要注意的是这些操作都需要使用DBA用户才能操作,而在需要删除表空间的物理文件时需要格外的注意,不然一旦删除表空间的物理文件,Oracle的数据是无法恢复的,Oracle的表空间物理文件的路径在创建表空间时就有定义,当然如果忘记了,可以查询Oracle的系统表来查询:

SQL> select file_name,tablespace_name from dba_data_files;

当然,还有更多的查询方式在以前有写过Oracle下的常用的系统表和系统视图,在此就不做过多的说明,需要的可以参看:http://jim123.blog.51cto.com/4763600/1947872

本文出自 “技术随笔” 博客,谢绝转载!

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

oracle asm管理下怎样增加表空间容量

oracle怎么删除表空间下所有的表

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

oracle数据库表空间占用太大,如何在不删除表的情况下缩小占用空间

ORACLE删除当前用户下所有的表的方法

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