Bonjour,
nous voulons partitionner une partie de nos tables, dont les plus volumineuses (dont une à 20 M lignes), en profitant de la migration de 8i vers 9i (oui, le client a un peu de retard...).
Pour cela je crée les tables partitionnées sur la base cible, puis toutes les partitions, et enfin les index locaux et globaux de celles-ci.
Ensuite j'ai fait l'import full avec IGNORE=Y pour que les lignes des tables partitionnées, qui ne l'étaient pas avant, soient placées dans les bonnes partitions.
Résultat : sur une base d'environ 50 Go un import qui prenait environ 5/6 h a pris ce week-end ... 66 heures. Je pense que c'est dû au fait que l'insertion ne se fait plus en masse mais ligne par ligne pour choisir la bonne partition.
Evidemment c'est un temps beaucoup trop long pour interrompre l'appli en prod.
Je n'ai pas l'expérience d'une telle opération mais je pensais à 2 options :
1) est-ce que les index sont mis à jour au fur et à mesure au cours de l'import ? Si oui cela doit le ralentir. Donc ne pas créer les index avant l'import, ne pas les importer et les créer seulement après.
2) créer une seule partition par défaut sur les grosses tables, si cela permet de garder l'insertion de masse (?), puis faire des splits sur celle-ci pour créer les autres partitions. Ce sera plus long mais la base sera accessible et j'espère pas trop pénalisée pendant les splits.
Que pensez-vous de ces solutions ? Ou y a-t-il un autre moyen ?
Merci.
Partager