Vous n'êtes pas identifié(e).
Bonjour,
Je suis en train d'evaluer la faisabilité d'utiliser ora2pg pour migrer nos bases Oracle vers Postgresql.
Nous avons une forte utilisation du partitionnement par range sous oracle.
Les tables sont partitionnées par mois et le nommage est le suivant : 'PYYYYMM' et ce pour toutes nos tables, il n'y a pas dans le nommage des partitions une reference explicite à la table.
Dans un premier temps je me suis trouvé confronté à l'erreur suivante :
"FATAL: ERROR: relation "p201404" does not exist"
Normal, j'avais oublié d'exporter la definitiion des parttions (avec l'option "-t PARTITION"), mais après le lancement avec cette option je me rends compte que je ne pourrais jamais créer mes 140000 partitions sachant que le toutes mes tables auront le les mêmes noms de partitions.
Dans le cadre de notre migration vers postgres, nous voulons utiliser le contrib pg_partman qui donne une entiere satisfaction et nous permet de gerer automatiquement la purge.
Ma question est la suivante : y a t'il une option d'Ora2pg pour copier les tables partitionnées directement dans une table normale ?
Autre option donner un patern pour remplacer le nom de partition PYYYYMM en part_YYYY_MM ....
Merci d'avance de votre aide
Dernière modification par menardorama (20/05/2014 18:26:48)
Hors ligne
Bonjour,
Je ne comprend pas bien. Si vous avez une table partitionnée dans Oracle vous n'avez pas a vous préoccuper des noms des partitions. Ora2Pg va vous exporter la définition de la table mère et des 14000 partitions en créant des tables filles avec leur propre nom de partition, celui que vous avez défini ('PYYYYMM'). Cela se fait effectivement avec la commande :
ora2pg -T PARTITION
Ensuite, lorsque vous ferez l'export des données avec l'option -t COPY Ora2Pg mettra les données directement dans leur table filles respectives pour éviter de passer par la table mère et donc le trigger qui normalement redirige les données dans les tables filles.
Tout cela est automatique, du coup je ne comprend pas bien le problème que vous rencontrez. Ora2Pg supporte le partitionnement par RANGE et par LIST, mais pas le sous-partitionnement.
Cordialement,
Hors ligne
Le problème est que nous avons la meme structure de tables pour tous nos clients. Et comme le nom des partitions est le même pour toutes ces tables, ora2pg genere les ddl de créations des tables hérités mais avec les mêmes noms (mails avec un héritage différent).
Donc pour résumer ora2pg -t PARTITION genere bien les DLL mais c'est le même pour chaque table (partition) avec un héritage différent.
J'espère que c'est plus clair merci pour ton aide.
Si besoin je peux poster le ddl de quelques tables pour l'exemple
Hors ligne
Le probleme est corrigé dans les derniers commit sur github.
Merci pour la réactivité de Gilles
Hors ligne