oracle数据库删除无用表空间及数据文件过程
应用场景: 数据库服务器A下的一张数据库表重建过,并且数据已经迁移到新表空间下,现遗留了一些原有的表空间数据文件在服务器上,耗费资源,如图所示: 原数据库表对应的数据文件:
迁移后数据文件: 我们的目的是,将这些没用的dbf文件删除,把/opt/oradata下的存储释放出来。
发现CLRDBS01-14是重建前的,CLRDB01-60是重建后的。
drop tablespace CLRDBS14 INCLUDING CONTENTS AND DATAFILES; oracle提示报错: 此错误说明,该表空间下有分区表在用此表空间的数据文件,所以不能直接删除表空间
查询哪些表在占用这个CLRDBS14: SELECT x.table_name,x.partition_name,x.tablespace_name 表空间1,y.tablespace_name 表空间2 FROM dba_tab_partitions x,dba_tab_partitions y WHERE x.tablespace_name ='CLRDBS14' AND y.tablespace_name <> 'CLRDBS14' AND x.table_name=y.table_name;
经查询,有5个表在使用,分别是:
TFA_ALARM_UNSTANDARD TFA_ALARM_GCSS 这两张下面没数据,导出建表语句,删除。
drop tablespace CLRDBS14 INCLUDING CONTENTS AND DATAFILES; 此次正常执行。
登陆数据库服务器下/opt/oradata,查看之前的clrdbs数据文件,已经在服务器上找不到了
这块特殊说明一下,空间不会马上就释放出来,因为linux OS系统bdf命令的机制是,只有当线程释放完毕后,才会释放bdf命令内的空间。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |