在删除表空间的时候碰到这个错误。
具体错误信息如下:
SQL> DROP TABLESPACE CENTER INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE CENTER INCLUDING CONTENTS AND DATAFILES
*第1行出现错误:
ORA-23515:实体化视图和/或它们的索引存在于表空间中
检查Oracle的错误描述文档:
ORA-23515: materialized views and/or their indices exist in the tablespace
Cause: An attempt was made to drop a tablespace which contains materialized views and/or their indices.
Action: Drop the materialized views in this tablespace. Also, find indices belonging to materialized views in this tablespace and drop then. Then trydropping the tablespace.
莫非表空间中包含了物化视图,就无法直接删除表空间了。
尝试模拟一下错误:
SQL> CREATE TABLESPACE TEST DATAFILE '/data1/oradata/testrac/test01.dbf' SIZE 10M;
表空间已创建。
SQL> CONN TEST/TEST已连接。SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY)
2 TABLESPACE TEST;
表已创建。
SQL> CREATE MATERIALIZED VIEW MV_T
2 TABLESPACE TEST
3 AS SELECT * FROM T;
实体化视图已创建。
SQL> CONN / AS SYSDBA已连接。SQL> DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES
*第1行出现错误:
ORA-23515:实体化视图和/或它们的索引存在于表空间中
物化视图和表相比,并没有太多的特殊之处,为什么不能在删除表空间的同时删除物化视图呢。怀疑Oracle删除表空间的时候只能删除存储在表空间之内的对象,比如表、索引、CLUSTER等,但是不能删除表空间以外的对象,比如存储过程、触发器、物化视图。这些源数据是存储在SYSTEM表空间的数据字典中的,它们不属于这个表空间的CONTENTS,因此删除会报错。