在我的开源数据库迁移项目Flyway中,我有一个功能可以清除当前数据库模式中的所有对象,而不会删除模式本身。
典型的实施方法如下:
Oracle Spatial Indexes 让我感到非常悲痛。
如何可靠地枚举以生成DROP INDEX xyz语句?
注意:这必须适用于 XE,10g和11g 。必须消除MDSYS模式中的所有引用。
我目前的解决方案如下:
在XE上:
在Oracle 10g上:
10g似乎级联了MDSYS.sdo_index_metadata_table中元数据的删除以及空间索引表的删除(MDRT_1234 $等)。
XE没有。
10g和XE都没有级联删除MDSYS中的元数据.user_sdo_geom_metadata
答案 0 :(得分:4)
我通过使用
枚举所有SPATIAL索引解决了这个问题select INDEX_NAME from USER_SDO_INDEX_INFO
使用INDEX_NAME生成像
这样的DROP语句DROP INDEX my_index
答案 1 :(得分:0)
在10g上,尝试xxx_SDO_INDEX_yyy个视图,或者查找类型为SPATIAL_INDEX
的对象。你可以先放下这些,然后放下桌子。我不知道这些是否存在于XE上。