在我的开源数据库迁移项目中 飞速, ,我的功能可以清洁当前数据库架构中的所有对象,而无需删除模式本身。

典型的实施作用如下:

  • 列出所有对象
  • 生成这些对象的下降语句

甲骨文空间索引 不过,一直给我带来很多悲伤。

我怎样才能 可靠地枚举 它们是为了产生Drop Index XYZ语句?

注意:这必须对 XE,10G和11G. 。 MDSYS模式中的所有参考都必须消失。

我目前的解决方案看起来像这样:

在XE上:

  • 从mdsys.user_sdo_geom_metadata删除
  • 从mdsys.sdo_index_metadata_table删除sdo_index_owner =用户
  • 从user_objects中选择object_type,object_name其中object_type ='table'
  • drop * table_name *所有表的级联约束 / * * /

在Oracle 10G上:

  • 从mdsys.user_sdo_geom_metadata删除
  • 从user_objects中选择object_type,object_name其中object_type ='table'和object_name不喜欢'mdrt _%$'
  • drop * table_name *所有表的级联约束 / * * /

10G似乎在mdsys.sdo_index_metadata_table和删除空间索引表(MDRT_1234 $等)中撤离了元数据。

XE没有。

10G和XE都不会在mdsys.user_sdo_geom_metadata中撤离元数据

有帮助吗?

解决方案

我通过使用使用所有空间索引来解决它

select INDEX_NAME from USER_SDO_INDEX_INFO

并使用index_name生成诸如

DROP INDEX my_index

其他提示

在10克,尝试 xxx_sdo_index_yyy 视图或或者寻找具有类型的对象 SPATIAL_INDEX. 。您可以先丢弃这些,然后丢弃桌子。我不知道这些是否存在于XE上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top