【ORACLE】删除表空间,没有删除数据文件怎么办?解决办法

时间:2023-03-09 19:50:22
【ORACLE】删除表空间,没有删除数据文件怎么办?解决办法

创建表空间

SQL> create tablespace TEST datafile='+DATA/rac/datafile/test01.dbf' size 1g;

Tablespace created.

删除表空间:

SQL> drop tablespace test;

Tablespace dropped.

结果发现再次创建的时候出现问题:

SQL> create tablespace TESTdatafile '+DATA/rac/datafile/test01.dbf' size 1g;
create tablespace TEST datafile '+DATA/rac/datafile/test01.dbf' size 1g
*
ERROR at line 1:
ORA-01119: error in creating database file
'+DATA/rac/datafile/test01.dbf''
ORA-17502: ksfdcre:4 Failed to create file
+DATA/rac/datafile/test01.dbf
ORA-15005: name "rac/datafile/test01.dbf" is already used by an
existing alias

提示已经存在数据文件

有一个快速解决的方法就是在创建一个别的表空间数据文件,但这样os上的数据文件没有删除,还在占用空间

所以需要将原来的test01.dbf这文件删除掉或者重新利用

但是登录asmcmd后,rm这个文件报错,提示oracle正在使用,无法删除,这就很尴尬了,查找后发现是oracle的bug,关掉数据库后才能删除!不能因为这一个表空间的数据文件把库关里呀。所以有最合理的办法:

办法如下:

再次利用该数据文件

SQL> create tablespace TEST datafile '+DATA/rac/datafile/test01.dbf' ;

Tablespace created.

之后再删除:一定要加参数

SQL> drop tablespace test INCLUDING CONTENTS and datafiles;

Tablespace dropped.

这样再次查看就全部正常了!