Migrer une base de données Oracle vers PostgreSQL

 Article modifié dernièrement le 14 Mar 2016 @ 13 h 31 min

Présentation

Vous êtes de ceux qui pensent qu’il est tout à fait possible d’utiliser une base de données gratuite et libre pour vos besoins personnels ou pour votre entreprise ou des logiciels de gestions de ces données comme des logiciels dit de ERP ? je suis de ceux-là aussi.

Oracle Database s’est pourtant imposé en entreprise et domine nettement le marché, le seul moyen de s’en débarrasser est de migrer les données vers une autre base de données.

PostgreSQL est la seule alternative sérieuse à Oracle Database depuis le rachat de MySQL par Oracle  (par le biais du rachat de Sun), cependant la migration de données n’est pas si simple et s’avère quasiment toujours très compliqué.

Le but de cet article est donc de vous proposer quelques solutions envisageables pour réaliser cette migration de données d’Oracle vers PostgreSQL.

Passer par une entreprise spécialisée

Moyennant finances il est toujours possible de faire appel à une entreprise spécialisée qui va vous permettre de réaliser tous vos rêves, mais son coût est souvent très/trop élevé. Cependant pour les grosses entreprises ayant un important volume de données à migrer et nécessitant une garantie sur le travail effectué, c’est une solution plus qu’envisageable.

Ces entreprises spécialisées (dans PostgreSQL ou autres) offrent généralement un large panel de services :

  • Conseil en architecture
  • Audit de systèmes existants
  • Migration de données
  • Sécurisation des données
  • Support

Dalibo et CS sont de ces entreprises partenaires de PostgreSQL.

Utiliser un logiciel

Il existe un outil qui fait exactement ce que l’on souhaite, Ora2Pg, la tâche devient alors très accessible et simple. Je l’ai déjà utilisé et elle donne de très bons résultats.

Ce logiciel, basé sur PERL, permet en termes simples de convertir toutes les subtilités d’Oracle vers PostgreSQL.

Ora2pg

Voici la liste impressionnante des possibilités de cet outil gratuit (sous licence GPL) :

  1. Export full database schema (tables, views, sequences, indexes), with unique, primary, foreign key and check constraints.
  2. Export grants/privileges for users and groups.
  3. Export a table selection (by specifying the table names).
  4. Export Oracle schema to a PostgreSQL 7.3+ schema.
  5. Export predefined functions, triggers, procedures, packages and package bodies.
  6. Export range and list Oracle partition.
  7. Export full datas or following a WHERE clause.
  8. Export Oracle views as PG tables.
  9. Provide basic help for converting PLSQL code to PLPGSQL (still needs manual work).
  10. Works on any plateform.

Utiliser des requêtes à la main

Pour les bricoleurs et ceux qui souhaitent tout faire eux-même, il est possible de se créer un jeu de requêtes qui vont permettre d’extraire toutes les informations stockées dans votre base de données vers un fichier SQL.

Pour récupérer la liste des objets de ta base, voici la requête à utiliser :

Pour parcourir tous les objets et en extraire tous les données, voici une procédure qui permet de faire ceci en une boucle :

Un lien utile pour les méthodes disponibles pour extraire des informations ou méta données sur Oracle Database : Oracle DBMS_METADATA.

Un autre lien utile pour désactiver quelques fonctions qui permettent de générer des ordres DDL propres (set_transform_param notamment) : Extract Schema Using DBMS_METADATA package.

Trois flèches vers le bas

1- Logiciel de brouillage d’adresse IP :

Contourner la censure en surfant anonyme

2- L’article explicatif :

La différence entre un proxy et un VPN

3- Comment espionner un smartphone (app) :

L’application de référence

Commentez ici

  • Greg 8 juin 2010, 20 08

    Bon ben cet article m’a l’air clair, complet et concis (la règle des 3 C ), maintenant y’a plus qu’à en fait..

  • Jean-Paul Argudo 9 juin 2010, 9 09

    Bonjour et Merci pour cet article 🙂

    Merci d’avoir cité Dalibo…

    Cependant, vous avez omis de citer l’aide communautaire, qui à mon avis, est plus qu’utile pour ceux qui voudront faire la migration par eux-mêmes.

    Voici quelques pistes:
    * Tout d’abord, le site de PostgreSQLFr : http://www.PostgreSQL.fr, en particulier, le forum !
    * Ensuite, les mailing-list, en particulier la liste pgsql-fr-generale, seule liste du projet PostgreSQL en Français : http://www.postgresql.org/community/lists/
    Souscrire à la liste pgsql-fr-generale prend environ 2 minutes 🙂
    * Enfin, l’IRC, pour internet relay chat: serveur irc.freenode.net, canal #postgresqlfr : nous y sommes une grosse quarantaine tous les jours et pouvons répondre à vos questions en temps réel !

    Voilà…

    Le nombre de « grands noms » qui migrent tout ou partie de leurs serveurs Oracle à PostgreSQL ne cesse de s’allonger… Il n’y a qu’à chercher sur le web ou nous demander ;-).. On peut citer par exemple l’étude de l’IGN qui a fait le choix du couple PostgreSQL+PostGIS (cartouche spatiale) sur Oracle Spatial:
    http://www.postgresql.fr/temoignages:ign

    Pour ora2pg, je précise que Gilles Darold, son auteur, est français, et il cherche des gens motivés pour migrer automatique, en plus du schéma complet et des données (ce qu’il fait déjà donc), le PL/SQL au PL/PGSQL. N’hésitez pas à le contacter à ce sujet (voir le site d’ora2pg)…

    Encore merci pour cet article,


    Jean-Paul Argudo
    http://www.Dalibo.com
    http://www.PostgreSQL.fr

  • Mimie 9 juin 2010, 9 09

    @Jean-Paul Argudo : merci pour toutes ces précisions et bonne continuation ^^

  • Seb L. 10 juin 2010, 10 10

    Sympa cette petite présentation.

    Existe-t-il des outils pour faire l’inverse ? Je sais ce n’est pas courant mais il m’arrive trop souvent de devoir réécrire des scripts de création/modification de tables ou de mise à jour des données PostgreSQL pour Oracle.

  • Maria 6 juin 2011, 14 02

    Bonjour;
    Voila G lu votre commentaire ; je vous remercie déja pr vos infos!! et j voulais vous demandez , par rapport a M. Gilles Darold?? C ki le M?? et puis comment le contacter?? G vu sur votre commentaire que C klk1 qui est intéréssé par les gens qui veulent faire une migration automatique ( Au fait j fais une licence profesionnelle en Administration des bases de données, et j fais un stage en parallele ds une grande entreprise , le projet du stage repose sur la migration de leur BD d’Oracle ver Postgres!! C une grande BD : plus k 200 tables + les procedures stockées..)
    J’attend votre réponse!! et Merci d’avance^^

  • nour 29 juin 2011, 10 10

    bonjour
    je ma demande est ce que il existe un moyen de faire la migration sous windows

  • Gilles RIAND 16 septembre 2011, 10 10

    Pour une migration sans trop de douleur il existe un logiciel assez cool : ESF Database Migration Toolkit : Franchement pas mal !

  • barachoua 23 juillet 2012, 11 11

    Bonjour Maria

    Je serai intéressé de rentrer en contact avec vous car je suis dans une problématique de migration de SGBDR « oracle –>> posgresql  » et je voudrai bénéficier de votre expérience.

    Merci

  • Greg 14 janvier 2013, 17 05

    Lut,
    Le dernier lien de l’article est mort.

  • Jean-Paul Argudo 14 janvier 2013, 18 06

    @Greg: quel lien exactement ?

    PS: ora2pg est plus que jamais l’outil à considérer pour une migration Oracle! En plus de faire vraiment bien le travail aujourd’hui, il propose dans sa dernière version un module qui permet d’évaluer la charge d’une migration du code embarqué!

  • Mimie 14 janvier 2013, 22 10

    Lien « Extract Schema Using DBMS_METADATA package » redevenu OK.

  • Greg 14 janvier 2013, 23 11

    Mimie a corrigé le tir, le lien est donc remis.

  • Greg 14 janvier 2013, 23 11

    Merki.

Article suivant:

Article précédent:

Share This