CaiHuajiang 2010-01-11 16:12
浏览 230
已采纳

ORA-25183: 索引表的顶级索引段在不同的表空间中

今天在删除一个表空间时,使用删除语句drop tablespace flyy including contents and datafiles cascade contraints;
报出错误:ORA-25183: 索引表的顶级索引段在不同的表空间中。
查找文档得得结果如下:
[quote]ORA-25183: index-organized table top index segment is in a different tablespace
Cause: An attempt was made to drop a tablespace which contains an index only table"s overflow segment but not the top index segment"
Action: find index-organized tables which span the tablespace being dropped and some other tablespace(s). Drop these tables.[/quote]
提示要先找到索引表,先删除索引表再删除表空间。但是因为先执行了语句drop user flyy cascade;
已经无法找到用户下的表了,怎么办?
[b]问题补充:[/b]
不能了,用户被删了,没开flashback。
只是想知道有什么办法可以删掉独立的IOT
[b]问题补充:[/b]
王者之剑 可能没碰到过这个问题。
这个是因为在原有的表是索引表,并设置了溢出段。那么溢出段会在SYS表空间生成一个对应的SYS_IOT_OVER_1234这样子的表。
默认维护SYS_IOT_OVER_1234的方式必须通过alter table 原表 (purge)等操作。而通过直接操作SYS_IOT_OVER_1234表都是非法的操作。

当使用drop user flyy cascade;后,原索引表和表主键都会被删除掉,但是这个存在于SYS表空间的表是不被删除掉的。
但是关键的是,原用户里的内容全部删除了,也没有原索引表可以来操作SYS_IOT_OVER_1234表了。
[b]问题补充:[/b]
嗯,我描述不够清,主要是概念也很模糊。

  • 写回答

4条回答 默认 最新

  • iteye_21206 2010-01-12 17:49
    关注

    从ALL_INDEXES,ALL_TABLES,ALL_SEGMENT中去找好看,把相关的tablespace删除掉就好了

    其实还可以另外一种暴力的办法,从v$datafile中找到相关的数据文件,把数据文件删除掉,重起数据库,用命令offline drop 数据文件,然后就可以删除表空间了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器