PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 26/07/2016 09:53:23

Juju
Membre

Ora2pg : foreign keys entre schémas

Bonjour à tous,

Je suis en train de faire des tests de migration avec ora2pg v17.4 (depuis 1 base Oracle 11gR2). J'ai dans ma base 1 dizaine de schémas avec des foreign keys entre eux. Je vois que ora2pg ne prend pas ces foreign keys et pour l'instant je n'ai rien trouvé sur la doc ou le net par rapport à ça, savez-vous si une option le permet ?

Merci !

Hors ligne

#2 26/07/2016 17:57:29

gilles
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,

Comment exportez vous les schémas ? Un par un ou sans spécifier de schéma (directive SCHEMA dans ora2pg.conf ou option -n)?

Lorsque que vous exportez les schémas un par un, seul les objets appartenant ou pointant vers ce schéma sont exportés. En mettant en commentaire la directive  SCHEMA et en activant EXPORT_SCHEMA à 1 Ora2Pg exportera l'intégralité des objets en les préfixant par leur nom de schéma dans Oracle et normalement vous devriez retrouver vos foreign keys. Si ce n'est pas le cas alors il s'agit d'un bug.

Cordialement,

Hors ligne

#3 26/07/2016 18:11:30

Juju
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,
Effectivement j'exporte les schémas un par un, et c'est en lisant votre réponse que je me rends compte que c'est logique que les foreign keys vers d'autres schémas ne soient pas prises en compte... Je vais tester de les exporter tous à la fois.
Merci beaucoup !
Cordialement.

Hors ligne

#4 29/07/2016 11:51:58

Juju
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,
J'ai fait quelques tests et pour l'instant ce n'est pas concluant. J'ai bien positionné EXPORT_SCHEMA à 1, j'ai enlevé l'option -n, je n'ai pas activé le paramètre SCHEMA dans le .conf, et en sortie j'ai un script contenant toutes les tables de tous mes schémas mais je n'ai plus les ordre de création des schémas (je n'ai pas touché au paramètre CREATE_SCHEMA qui par défaut est activé) et je n'ai toujours pas les foreign keys entre schémas. Je vais continuer à faire des tests (mais avec moins de schémas, parce que du coup l'extraction du DDL par ora2pg met 2h dans cette configuration).

Hors ligne

#5 29/07/2016 17:20:15

gilles
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,

Effectivement ces clés étrangères faisant référence à une table dans un autre schéma n'étaient pas exportées. Ce n'est plus le cas, j'ai complètement réécrit la fonction d’extraction des foreign key et le commit d4a90fe corrige le problème. Merci de télécharger et d'utiliser le code en développement disponible sur github ( https://github.com/darold/ora2pg ).

En faisant un export d'un schéma on obtient le code suivant :

ALTER TABLE employees ADD CONSTRAINT fk_dept_deptno FOREIGN KEY (department_id) REFERENCES scott.dept(deptno) ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
 

la table référencée est préfixée par le nom du schéma, ici scott. Et si l'on fait un export sans schéma, les deux tables sont préfixées par leur nom de schéma :

ALTER TABLE hr.employees ADD CONSTRAINT fk_dept_deptno FOREIGN KEY (department_id) REFERENCES scott.dept(deptno) ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;
 

Par la même occasion l'extraction du catalogue Oracle devrait être plus rapide aussi.

A noter que le commit précédent corrige l'absence des créations de schéma si  EXPORT_SCHEMA et CREATE_SCHEMA sont positionné à 1.

Cordialement,

Dernière modification par gilles (29/07/2016 17:21:29)

Hors ligne

#6 29/07/2016 17:50:21

Juju
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,
Quelle réactivité !! Merci beaucoup pour ces corrections, je teste tout ça au plus vite et viendrai mettre à jour ce thread.
Merci encore.
Cordialement.

Hors ligne

#7 01/08/2016 10:04:34

Juju
Membre

Re : Ora2pg : foreign keys entre schémas

Bonjour,
Je viens de tester sur une base contenant 2 schemas et quelques tables et je confirme que tout est bon maintenant, j'ai bien les ordres de création des 2 schemas ainsi que toutes les FK entre mes schemas.
Merci encore !
Julien.

Hors ligne

Pied de page des forums