IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez PostgreSQL Discussion :

Migrer de Oracle à Postgresql


Sujet :

Contribuez PostgreSQL

  1. #1
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    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
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Tu comptes y passer... quatre ans ????

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    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
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 143
    Points : 69
    Points
    69
    Par défaut
    Petite relance pour savoir si ce projet de tuto à abouti ?

  5. #5
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    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
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    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 expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    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
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    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
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    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
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    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
    Futur Membre du Club
    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 : 5
    Points
    5
    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
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    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
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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é
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    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 : 53
    Points
    53
    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
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 19
    Points
    19
    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 expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    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/

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/02/2007, 11h59
  2. [migration] Oracle -> Postgresql
    Par laffreuxthomas dans le forum Migration
    Réponses: 5
    Dernier message: 20/04/2006, 15h16
  3. Tests de perf Oracle/PostgreSQL/MySQL
    Par champijulie dans le forum Décisions SGBD
    Réponses: 18
    Dernier message: 05/08/2005, 16h35
  4. transaction Oracle -> Postgresql
    Par krimson dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 03/08/2005, 13h25
  5. portage oracle/postGresql -- pl/sql param in/out
    Par luta dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/08/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo