Question

Dans mon projet de migration de base de données open-source des voies de migration, je dispose d'une fonctionnalité qui nettoie tous les objets dans le schéma de base de données en cours, sans laisser tomber le schéma lui-même.

La mise en œuvre typique fonctionne comme suit:

  • Liste tous les objets
  • Générer instructions de suppression de ces objets

Oracle Spatial Index ont été me cause beaucoup de chagrin si.

Comment fiable Énumérer eux afin de produire des déclarations de xyz DROP INDEX?

Note: Ce travail doit à la fois XE, 10g et 11g . Toutes les références dans le schéma MDSYS doivent être franchies.

Mon apparence actuelle de solution comme ceci:

Le XE:

  • SUPPRIMER DE mdsys.user_sdo_geom_metadata
  • SUPPRIMER DE mdsys.sdo_index_metadata_table OU sdo_index_owner = USER
  • SELECT object_type, nom_objet DE user_objects OU object_type = 'TABLE'
  • DROP * nom_table * CASCADE CONTRAINTES PURGE / * pour toutes les tables * /

Oracle 10g:

  • SUPPRIMER DE mdsys.user_sdo_geom_metadata
  • SELECT object_type, nom_objet DE user_objects OU object_type = 'TABLE' et object_name pas comme 'TRDM _% $'
  • DROP * nom_table * CASCADE CONTRAINTES PURGE / * pour toutes les tables * /

10g semble en cascade l'élimination des métadonnées dans MDSYS.sdo_index_metadata_table et la suppression des tables d'index spatial (MDRT_1234 $ et analogues).

XE ne fonctionne pas.

Les deux 10g et XE ne cascade pas la suppression des métadonnées dans MDSYS.user_sdo_geom_metadata

Était-ce utile?

La solution

Je l'ai résolu tous les index en dénombrant SPATIAL en utilisant

select INDEX_NAME from USER_SDO_INDEX_INFO

Et en utilisant INDEX_NAME pour générer DROP comme

DROP INDEX my_index

Autres conseils

sur 10g, essayez xxx_SDO_INDEX_yyy vues ou encore chercher des objets avec le type SPATIAL_INDEX. Vous pouvez déposer chacun d'entre eux d'abord, puis déposer la table. Je ne sais pas si ceux-ci existent sur XE ou non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top