今天做实验的时候创建了一个表空间lob_tbs, 并且在该表空间上创建了一个包含大对象字段的表lob_tab。 当实验结束想要删除该表空间时报错ORA-22868。使用Oracle的帮助信息oerr ora 22868很容易定位问题的原因,根据提示先删除含有大字段的表,然后在删除该表空间就可以了。
问题还原如下:
1. 创建表空间lob_tbs
create tablespace lob_tbs datafile ‘/dbfiles/lob_tbs01.dbf’ size 100m
autoextend on extent management local;
2. 在users表空间创建表lob_tab, 大字段列存储在lob_tbs表空间中
create table lob_tab (id int, doc blog) tablespace users
lob(doc) store as securefile(tablespace lob_tbs compress high deduplicate);
3. 删除表空间lob_tbs报错ORA-22868
drop tablespace lob_tbs including contents;
drop tablespace lob_tbs including contents
*
ERROR at line 1:
ORA-22868: table with LOBs contains segments in different tablespaces
使用oerr帮助信息查到提示drop these tables and reissure drop tablespace. 先删除表,然后在删除表空间
enmoedu1*PROD1 ~ $ oerr ora 22868
22868, 00000, "table with LOBs contains segments in different tablespaces"
// *Cause: An attempt was made to drop a tablespace which contains the
// segment(s) for the LOB columns of a table but does not contain
// the table segment.
// *Action: Find table(s) with LOB columns which have non-table segments in
// this tablespace. Drop these tables and reissue drop tablespace.
HR@PROD1 > drop table lob_tab;
SYS@PROD1 > drop tablespace lob_tbs;
Tablespace dropped.
遇到报错信息时,使用oerr可提供说明,甚至给出指导性建议来帮助我们处理问题。