Bonjour,
Afin de réorganiser une base de données (supprimer puis recréer un tablespace nommé data_xl_2) nous déplaçons de contenu d'un tablespace vers un autre de façon temporaire. Ensuite le tablespace vide est supprimé puis recréé et nous redéplaçons les objets vers le tablespace nouvellement créé.
Pour ce faire j'ai créé deux scripts permettant de déplacer les objets.
Le premier déplace les objets (une table sans index, des partitions d'une table partitionnée) de data_xl_2 vers le tablespace data_xl_3 les contenant temporairement. Je n'ai pas reconstruit les partitions d'index.
Le second script redéplace la table et les partitions de table vers le tablespace "origine" data_xl_2 qui été recréé (suppression + recréation) et reconstruit les index inutilisables par l'instruction
alter table <nom_table> modify partition <nom_partition> rebuild unusable local indexes
Lors de mes tests (pour lesquels je n'ai pas détruit/recréé le tablespace data_xl_2 sur ma base de test) tout se passe bien.
Lors des tests sur la base de recette - avec suppression et recréation du tablespace - les instructions
alter table <nom_table> move partition <nom_partition> tablespace DATA_XL_2
sortent en erreur ORA-01502: l'index 'RA5.RA5_VENTE_IDX1' ou sa partition est inutilisable.
Pour quelle raison le move partition qui fonctionne correctement sur ma base de test quand les partitions d'index sont inutilisables donne-t-il une erreur de partition inutilisable sur l'autre base ?
Je me suis demandé sir la suppression/recréation du tablespace pouvait fournir une explication. J'ai donc testé la manip sur ma base (en me limitant à un move d'une unique partition) et je ne reproduit pas l'erreur.
Est-ce qu'un paramétrage différent de la base peut-être à l'origine de cette différence de comportement ?
Je pose cette question plus pour ma compréhension car une solution est de reconstruire les index après le move des partition dans le tablespace de stockage temporaire.
Partager