今天发现自己硬盘装的满满的,整理发现之前用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了解很少,不知道这个有没有别人也到,估计很少吧,有人遇到就解决了,没有就是自己作为成长的脚步,一个笔记呐
第一个综合的,觉得可行但是没有测试,以后有机会遇到吧,第二个非本人测试,但是问题解决了,且问题基本和我的一样,就是注意名称的写法显示等,总之细心就对了。