表空间在dba_tablespaces中存在,删除时却提示无法删除

删除表空间错误提示:ORA-00959 表空间不存在

今天发现自己硬盘装的满满的,整理发现之前用ORACLE建了很多表空间,占据我好多硬盘空间,清理一下用不到的数据吧。。。。。

麻烦来了,开始好好的,快结束了时候,表空间删不掉了,以前的办法不能解决了,就上网搜了下看别人怎么解决的:

第一个问题解决方法:

问题:SQL> drop tablespace csc_index including contents and datafiles;
drop tablespace csc_index including contents and datafiles
*
第 1 行出现错误::
ORA-00959: 表空间的 'CSC_INDEX' 不存在

可是查询了
v$tablespace
dba_tablespace
表空间明明在啊,状态也为online,为什么啊,

网友解决办法:sql>alter database datafile ''文件路径及文件名'' offline drop;
sql>drop tablespace CSC_INDEX;

――――――――――――――――――――――――――――――――――――――――――――――――――

第二个问题解决方法:

删除表空间时报ORA-00959: 表空间不存在,但在dba_tablespaces中的确能查询到这个表空间。

SQL> DROP TABLESPACE TEST01 INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE TEST01 INCLUDING CONTENTS AND DATAFILES
ORA-00959: 表空间 'TEST01' 不存在

SQL> SELECT tablespace_name FROM dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
TEST01
。。。。。。

在数据库的alert_sid.log中找到创建表空间的脚本如下:

Fri Mar 04 09:02:19 2011
CREATE tablespace "TEST01" DATAFILE 'D:/ORACLE/TEST01.DBF' SIZE 10M
Completed: CREATE tablespace "TEST01" DATAFILE 'D:/ORACLE/TEST01.DBF' SIZE 10M
-- 原来在创建表空间时,对表空间名加了引号。难怪删不掉呢。

--创建时加双引号,删除也加入双引号即可
SQL> DROP TABLESPACE "TEST01" INCLUDING CONTENTS AND DATAFILES;
表空间已删除

Deleted file D:/ORACLE/TEST01.DBF
Completed: DROP TABLESPACE "TEST01" INCLUDING CONTENTS AND DATAFILES

经常遇到oracle中有对象不能删除的情况,大多数都与创建对象时对象名中加了双引号有关系。

――――――――――――――――――――――――――――――――――――――――――――――

第三个,也就是我自己的问题解决办法:

删除表空间时
SQL> drop tablespace GAEA_DATA;
drop tablespace GAEA_DATA
*
第 1 行出现错误:
ORA-00959: 表空间 'GAEA_DATA' 不存在

。。。。。。。。。试了好多办法包括以上的办法,以无效告终,最后我看PL/SQL界面的时候,无意发现那个表空间和SQL*Plus查询显示的名字不一样,后面多了一串“_tablespace”,恍然大悟,SQL*Plus竟然不显示,做了如下尝试:

SQL> drop tablespace GAEA_DATA_tablespace;

表空间已删除。
OK。删除成功,甚是高兴。。。。。本人菜鸟显然对这个ORA了解很少,不知道这个有没有别人也到,估计很少吧,有人遇到就解决了,没有就是自己作为成长的脚步,一个笔记呐

第一个综合的,觉得可行但是没有测试,以后有机会遇到吧,第二个非本人测试,但是问题解决了,且问题基本和我的一样,就是注意名称的写法显示等,总之细心就对了。

 

你可能感兴趣的:(database,空间,online,contents,including)