Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 17 sur 17
  1. #1
    Membre Expert Avatar de scheu
    Inscrit en
    juin 2007
    Messages
    1 503
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 1 503
    Points : 1 495
    Points
    1 495

    Par défaut Migrer de Oracle à Postgresql

    Bonjour

    J'ai en tête l'idée de faire un tutoriel sur la migration d'Oracle à Postgresql, axé sur les principales différences entre les 2 SGBDs (commit, fonctions, types de données, comportements à une même syntaxe SQL, ...) , les fonctionnalités à adapter sur Postgresql, les différences de respect de la norme SQL, les principales techniques de migration, etc ...

    Cet article se veut technique et non pas politique, le but n'étant pas de dire "Postgresql c'est bien, Oracle c'est pas bien"

    Qu'en pensez-vous ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro Frédéric BROUARD
    Expert SGBDR & SQL
    Inscrit en
    mai 2002
    Messages
    13 415
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric BROUARD
    Localisation : France

    Informations professionnelles :
    Activité : Expert SGBDR & SQL
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 13 415
    Points : 27 566
    Points
    27 566

    Par défaut

    Tu comptes y passer... quatre ans ????

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
    http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Membre Expert Avatar de scheu
    Inscrit en
    juin 2007
    Messages
    1 503
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 1 503
    Points : 1 495
    Points
    1 495

    Par défaut

    Citation Envoyé par SQLpro Voir le message
    Tu comptes y passer... quatre ans ????
    Non pourquoi ?
    Les différences ne sont énormes, et c'est une question qu'on peut se poser à juste titre quand dans une boîte on veut migrer sur un SGBD opensource
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  4. #4
    Nouveau Membre du Club
    Inscrit en
    juillet 2006
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 141
    Points : 39
    Points
    39

    Par défaut

    Petite relance pour savoir si ce projet de tuto à abouti ?

  5. #5
    Membre Expert Avatar de scheu
    Inscrit en
    juin 2007
    Messages
    1 503
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 1 503
    Points : 1 495
    Points
    1 495

    Par défaut

    Toujours dans les cartons faute de temps, néanmoins si tu veux migrer de Oracle à Postgresql je peux t'aider. Que veux-tu savoir ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  6. #6
    Membre régulier
    Inscrit en
    février 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 283
    Points : 84
    Points
    84

    Par défaut

    Bonjour,

    Ce post m'interesse particulièrement car je suis en train de préparer une migration Oracle [8i] -> Postgres.

    Je pense utiliser l'outil ora2pg, pour les données, pas trop de pb je pense mais pour les procédures, packages, triggers et fonctions il faut faire une revue de code.

    Une autre question se pose, j'ai beaucoup de vue matérialisées et je voulais savoir comment se passait la cohabitation Oracle/Postgres.

    Si par exemple Postgres doit supporter le snapshot log sur lequel Oracle va venir rafraichir ses données et inversement.

    As-tu déjà rencontré ce cas de figure ?

    Meric pour ta réponse
    Alain

  7. #7
    Membre Expert Avatar de scheu
    Inscrit en
    juin 2007
    Messages
    1 503
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 1 503
    Points : 1 495
    Points
    1 495

    Par défaut

    Pour les PL/SQL, il faut bien évidemment les réécrire en PL/PgSQL, la syntaxe est assez similaire mail il faut néanmoins s'y plonger et bien recetter
    Pour les rafraichissements Oracle vers Postgresql, j'utilise en ETL externe donc je ne pourrai pas t'aider

    Par contre au delà de la migration il y a quelques différences et incompatibilités sur lesquelles il faut faire très attention. Par exemple :
    - Postgresql sensible à la casse pour tous les noms d'objets (donc requêtes et scripts sans doute à modifier si les tables sont écrites une fois en majuscule, une fois en minuscule). Le mieux est de choisir une convention : tout en majuscules ou tout en minuscules, sinon on court droit à la catastrophe
    - les requêtes à réécrire : fonctions Oracle non standard à réécrire en PL/PgSQL, syntaxe (+) pour jointures ouvertes non supportée par Postgresql, utiliser obligatoirement "as" pour renommer une colonne ou une sous-requête sur Postgresql
    - conversions implicites qui ne marchent plus sur Postgresql (toujours caster explicitement)
    - le type de données "date" est différent (stocke aussi l'heure sur Oracle, pas sur Postgresql)
    - gestion des NULL : NULL = chaîne vide sur Oracle mais pas sur Postgresql donc résultat différent sur filtre "where colonne is null" si la colonne vaut une chaîne vide
    - commit implicite sur Postgresql
    - pas de synonymes (utiliser à la place des vues affichent le "select *" de la table)
    - pas de notion de package sur Postgresql

    J'en oublie certainement
    N'hésite pas si tu as rencontre d'autres problèmes, le partage d'expériences est toujours enrichissant
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  8. #8
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 830
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 830
    Points : 2 535
    Points
    2 535

    Par défaut

    Citation Envoyé par scheu Voir le message
    - Postgresql sensible à la casse pour tous les noms d'objets
    Ni plus ni moins qu'Oracle il me semble, c'est-à-dire oui quand il y a des guillemets autour du nom et sinon non.

  9. #9
    Membre régulier
    Inscrit en
    février 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 283
    Points : 84
    Points
    84

    Par défaut

    Merci pour toutes ces précisions, je ne manquerais pas de faire un retour d'expérience sur cette migration.

  10. #10
    Membre régulier
    Inscrit en
    février 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 283
    Points : 84
    Points
    84

    Par défaut

    Bonjour,

    Je suis un peu perplexe quant à l'utilisation en production de Postgres, en effet j'ai posté un SR sur le site Pgfoudry.org .. aucune réponse ..

    L'une des problématiques de cette migration réside dans l'utilisation du mécanisme de réplication via db link.

    Il existe un module permettant de créer des vues matérialisées ainsi que des snapshots logs compatibles avec Oracle, à condition d'installer le module dbi-link (spécifique pour Oracle).

    J’ai installé le module, j'ai réussi à faire une requête distante mais si je relance le serveur Postgres le module devient inopérant .. un peu embêtant .. donc j'ai ouvert un call la semaine dernière et je n'ai aucune réponse.

    Je suis d'accord, les licences sont moins onéreuses qu'Oracle mais le service va avec ;-)

    A suivre ..

  11. #11
    Invité de passage
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : septembre 2009
    Messages : 15
    Points : 2
    Points
    2

    Par défaut

    Bonjour,

    Donc je suis dans le même cas que certains d'entre vous, à savoir migrer d'oracle 9.I vers Postgresql 8.3.
    Première question quel est l'outil de migration qui vous paraît le plus approprier, j'ai appris que ora2PG est pas mal mais je voudrais savoir si c'est le cas ou y a il d'autre plus performant.

    2ème question (la plus importante) connaissez vous tuto sinon pourriez vous me diriger vers des bonnes adresse qui traitent ce sujet

    Enfin quelles sont les étapes à suivre

    Merci infiniment de vos réponses

  12. #12
    Membre régulier
    Inscrit en
    février 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 283
    Points : 84
    Points
    84

    Par défaut

    Bonjour,

    Quelques news sur le projet de migration Oracle -> Postgres, je suis allé au PGDays au début du mois de novembre assister [entre autre] à une conférence dont le thème était
    'Retour d'expérience sur une migration Oracle 9i => Postgres 8.3'

    Le cdp à choisi d'utiliser l'outil ora2pg (je l'avait déjà testé avec succès) en revanche il n'y avait pas de réplication domage ...

    Il n'y avait pas non plus de procédures, fonctions, triggers uniquement des données.

    Donc pour répondre à la question, oui l'outil le plus approprié est à mon sens ora2pg.

    Pas besoin réellement de tuto, il y a un readme très bien documenté dans le package ora2pg.

    Cdt,
    Alain

  13. #13
    Invité de passage
    Homme Profil pro youness del-potro
    Inscrit en
    novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Nom : Homme youness del-potro
    Localisation : Sao Tomé

    Informations forums :
    Inscription : novembre 2011
    Messages : 2
    Points : 3
    Points
    3

    Par défaut younesss

    Bonjour,
    Je dois préparer un projet de migration entre une base de données Oracle et une base de données PostgreSQL.
    J'ai entendu parler de l'outil ora2pg mais, quand je le télécharge, il y a juste un paquet winrar.
    Quelqu'un peut-il m'aider et me dire comment je peux télécharger ora2pg et l'utiliser ?
    Merci d'avance.

  14. #14
    Expert Confirmé Sénior
    Homme Profil pro
    Inscrit en
    mai 2002
    Messages
    3 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : mai 2002
    Messages : 3 037
    Points : 4 613
    Points
    4 613

    Par défaut

    Ben winrar c'est un format compressé, donc télécharger le logiciel winrar pour le décompresser.


    Courage, vous en aurez besoin...

  15. #15
    Membre du Club
    Inscrit en
    octobre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 45
    Points : 46
    Points
    46

    Par défaut

    Bonjour,

    Pour vos besoins, on peut aussi utiliser un outil d'ETL. Par rapport au début de la discussion -2009- c'est vrai que ces outils ont évolué. Et sont plus facile à prendre en main. Avec quelque chose comme Talend, aujourd'hui, la prise en main est relativement aisée (faut pas etre un cador de l'ETL, quoi ) et permet d'operer la migration. Il y a pas mal de connecteurs: Oracle et Postgresql doivent etre supportés. En éspérant avoir pu vous aider!

    Bien cordialement,
    JCB.

  16. #16
    Invité de passage
    Inscrit en
    novembre 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 20
    Points : 4
    Points
    4

    Par défaut

    bonjour,

    je travaille en ce moment sur une base Oracle et je commence regarder les différences pour voir si c'est compatible avec un autre système de base de données.
    je vois pas mal de notion d'instance dans la doc de ce projet. Une Instance semble appartenir à un utilisateur et semble regrouper plusieurs bases de données physiques (enfin dans mon cas) un peu comme une métabase.


    pas de notion de package sur Postgresql
    quand on parle de package, c'est la même chose que la notion d'instance telle que je l'ai comprise?
    Si non est ce quelqu'un pourrait m'expliquer de quoi il s'agit ?

    merci.

  17. #17
    Membre Expert Avatar de scheu
    Inscrit en
    juin 2007
    Messages
    1 503
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 1 503
    Points : 1 495
    Points
    1 495

    Par défaut

    Sur Oracle, un package peut contenir plusieurs fonctions et/ou procédures, et on les appelle par "nom_schema"."nom_package"."nom_fonction"

    Sur Postgresql, les packages n'existent pas, il faut directement créer des fonctions et/ou procédures mais on ne peut pas les grouper en packages

    Cela n'est pas gênant en soi, on peut toujours appeler ces fonctions par "nom_schema"."nom_fonction". C'est juste que parfois quand on doit développer plusieurs procédures et/ou fonctions qui concernent le même traitement, on préfère les regrouper en package pour des questions de lisibilité


    Concernant la notion d'instance, sur Oracle chaque "base" a sa propre instance (= ses propres processeurs, ses propres zones mémoires, ses propres paramètres").

    Alors que sur Postgresql, toutes les bases deune même installation ( = d'une même version installée) partagent les mêmes zones mémoire, les mêmes processeurs SGBD, les mêmes journaux de transaction (WAL), les mêmes paramètres d'instance
    Ainsi, les bases sont moins indépendantes les unes des autres sous Postgresql, même si rien ne t'empêche de "surcharger" certains paramètres base par base, ou d'avoir une installation de Postgresql par base (en jouant sur les variables d'environnement, le PATH, ...) mais c'est plus compliqué
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •