sql如何删除表空间中某一个数据文件
这篇文章给大家分享的是有关sql如何删除表空间中某一个数据文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了泉州免费建站欢迎大家使用!
存在两种情况可能需要从表空间中“移走”数据文件。
1. 你不小心给一个表空间增加了一个数据文件,或者你把文件大小设得过大,所以想把它删掉。
2. 你正在进行恢复,因为丢失了一个数据文件所以不能启动数据库。
本文主要处理第一种情况,有别的文章来讲述由于丢失数据文件而不能使用数据库的恢复问题。
在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表。视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。
在对表空间/数据文件进行任何脱机、删除之前,首先对数据库进行一个全备份。
如果数据文件是所在表空间的唯一的数据文件,你只要简单地删除表空间即可:
DROP TABLESPACE
你可以运行下面的命令来查询表空间包含多少数据文件。
select file_name, tablespace_name
from dba_data_files
where tablespace_name ='
DROP TABLESPACE命令从Oracle数据字典删除表空间、数据文件和表空间的内容。Oracle不会再访问该表空间中的任何内容。物理地删除文件需要使用操作系统命令(Oracle从不物理地删除文件<注:本文是针对8i或者之前,9i可以使用including datafile选项来删除物理文件>),依赖你的操作系统平台,有的操作系统需要Oracle完全关闭才才可以删除(例如在WINDOWS NT 中需要关闭数据库,停掉相应的服务,在有的情况下Oracle还可能持有文件锁)。
如果你的表空间有多个数据文件,而你不需要表空间中的内容,或者你可以很容易重新生产表空间的内容,你可以使用DROP TABLESPACE
如果你的表空间有多个数据文件,而你还需保留该表空间中的其它数据文件中的内容,则你必须首先export出该表空间中的所有内容。为了确定表空间中包含那些内容,运行:
select owner,segment_name,segment_type
from dba_segments
where tablespace_name='
export出你想保留的内容。如果export结束,你可以使用DROP TABLESPACE tablespace INCLUDING CONTENTS. , 这样永久删除表空间的内容,使用操作系统命令物理删除数据文件,按所需数据文件重新创建表空间,把数据import至表空间。
注意:
ALTER DATABASE DATAFILE
如果你不想按照上述方法来删除表空间,还有其它一些解决方法。
1. 如果你想删除数据文件的原因是因为分配了不合适的文件大小,你可以考虑RESIZE命令。
2. 如果你不小心增加了一个数据文件,而这个文件还没有分配空间,你可以使用
ALTER DATABASE DATAFILE
感谢各位的阅读!关于“sql如何删除表空间中某一个数据文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
当前文章:sql如何删除表空间中某一个数据文件
文章网址:http://scyanting.com/article/poogpc.html