{"id":3293,"date":"2013-11-28T07:32:00","date_gmt":"2013-11-28T06:32:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/"},"modified":"2013-11-28T07:32:00","modified_gmt":"2013-11-28T06:32:00","slug":"migration-oracle-vers-postgresql-avec-ora2pg","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/","title":{"rendered":"Migration d&#8217;Oracle vers PostgreSQL avec ora2pg"},"content":{"rendered":"<p><img decoding=\"async\" class=\"blog-image aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg\" alt=\"\" \/><\/p>\n<p>Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter:<\/p>\n<ul>\n<li>la mise en place d&#8217;un outil d&#8217;aide \u00e0 la migration d&#8217;une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL<\/li>\n<li>L&#8217;utilisation de cet outil, nomm\u00e9 ora2pg<\/li>\n<li>Les difficult\u00e9s qu&#8217;un projet de migration doit affronter<\/li>\n<\/ul>\n<p>Le premier post porte sur l&#8217;installation d&#8217;ora2pg, un des outils disponibles sur internet.<\/p>\n<p>Je vais d\u00e9crire ici l&#8217;installation d&#8217;une machine sous linux &#8220;OEL 6.3&#8221; que l&#8217;on pourrait pompeusement nommer une appliance de migration ora2pg. Le choix de la distribution ayant \u00e9t\u00e9 fait pour minimiser les difficult\u00e9s, Oracle n&#8217;\u00e9tant pas \u00e0 priori disponible pour les distributions Debian et d\u00e9riv\u00e9es.<\/p>\n<p>L&#8217;id\u00e9e est d&#8217;y installer l&#8217;ensemble des outils n\u00e9cessaires:<\/p>\n<ul>\n<li>les drivers perl DBI,\u00a0 DBD::ORACLE , DBD::Pg<\/li>\n<li>Les librairies Oracle n\u00e9cessaires \u00e0 l&#8217;utilisation de ces drivers.<\/li>\n<li>ora2pg<\/li>\n<\/ul>\n<h3>Mais tout d&#8217;abord: qu&#8217;est ce qu&#8217;ora2pg ?<\/h3>\n<p>ora2pg un utilitaire \u00e9crit en perl par Gilles Darold avec le soutien et les contributions de nombreuses personnes de la communaut\u00e9 PostgreSQL.<br \/>\nLa version courante est 11.4,\u00a0 les premiers d\u00e9veloppments remontant \u00e0 l&#8217;ann\u00e9e 2000.<\/p>\n<p>Les pr\u00e9requis de la version 11.4 sont :<\/p>\n<ol>\n<li>Une version de perl &gt; 5.6<\/li>\n<li>Les drivers perl DBI &amp; DBD:ORACLE<\/li>\n<li>La pr\u00e9sence sur votre syst\u00e8me des librairies Oracle.<\/li>\n<li>Optionnellement le driver perl DBD:Pg<\/li>\n<li>Les binaires de ora2pg<\/li>\n<\/ol>\n<h3>Installation<\/h3>\n<h3>Drivers DBI &amp; DBD::Pg<\/h3>\n<p>Nous commen\u00e7ons par le plus simple, l&#8217;installation des drivers DBI\u00a0 et DBD::Pg, parce qu&#8217;ils sont disponibles dans les repository des distributions:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">yum install perl-DBIyum install perl-DBD-Pg\nLoaded plugins: refresh-packagekit, security\nol6_UEK_base\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 1.2 kB\u00a0\u00a0\u00a0\u00a0 00:00\u00a0\u00a0\u00a0\u00a0 \nol6_UEK_latest\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 1.2 kB\u00a0\u00a0\u00a0\u00a0 00:00\u00a0\u00a0\u00a0\u00a0 \nol6_u3_base\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| 1.4 kB\u00a0\u00a0\u00a0\u00a0 00:00\u00a0\u00a0\u00a0\u00a0 \nSetting up Install Process\nResolving Dependencies\n--&gt; Running transaction check\n---&gt; Package perl-DBD-Pg.x86_64 0:2.15.1-3.el6 will be installed\n--&gt; Finished Dependency Resolution\nDependencies Resolved\n========================================================================================================================\n\u00a0Package\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Arch\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Repository\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Size\n========================================================================================================================\nInstalling:\n\u00a0perl-DBD-Pg\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 x86_64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2.15.1-3.el6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ol6_u3_base\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 196 k\nTransaction Summary\n========================================================================================================================\nInstall\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1 Package(s)Total download size: 196 k\nInstalled size: 544 k\nIs this ok [y\/N]: y\nDownloading Packages:\nperl-DBD-Pg-2.15.1-3.el6.x86_64.rpm\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 196 kB\u00a0\u00a0\u00a0\u00a0 00:00\u00a0\u00a0\u00a0\u00a0 \nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\nWarning: RPMDB altered outside of yum.\n\u00a0 Installing : perl-DBD-Pg-2.15.1-3.el6.x86_64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\/1 \n\u00a0 Verifying\u00a0 : perl-DBD-Pg-2.15.1-3.el6.x86_64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1\/1\nInstalled:\n\u00a0 perl-DBD-Pg.x86_64 0:2.15.1-3.el6\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Complete!\n<\/pre>\n<h3>Validation de l&#8217;installation<\/h3>\n<p>Dans notre cas, les commandes suivantes vont nous permettre d&#8217;avoir rapidement la possibilit\u00e9 de nous connecter \u00e0 une base postgresql.<br \/>\nNous pouvons tester avec le code ci-dessous la connexion \u00e0 la base Postgresql:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">#!\/usr\/bin\/perl \n use DBI;\nmy $dbh = DBI-&gt;connect('dbi:Pg:dbname=test;host=vmpgdeb2;port=54321','tstiste','manager') or die \"Erreur de connection :\u00a0 $DBI::errstrn\";\nprint \"2+2=\",$dbh-&gt;selectrow_array(\"SELECT 2+2\"),\"n\";\n$rv = $dbh-&gt;pg_ping;\nprint \"ping 1 : \", $rv,\"n\";\n$rv = $dbh-&gt;disconnect;\nprint \"deconnection \", $rv,\"n\";\n$rv = $dbh-&gt;pg_ping;\nprint \"ping 2 : \", $rv,\"n\";\nexit;<\/pre>\n<p>&nbsp;<\/p>\n<h3>Installation instance client Oracle<\/h3>\n<p>Une fois la validation de la connexion faite nous pouvons passer \u00e0 l&#8217;installation du driver DBD::Oracle et des librairies Oracle n\u00e9cessaires.<\/p>\n<p>Pour cela, nous avons besoin de t\u00e9l\u00e9charger du site <a href=\"http:\/\/www.oracle.com\/technetwork\/topics\/linuxx86-64soft-092277.html\">d&#8217;Oracle OTN<\/a> les trois paquets suivants&#8230;<\/p>\n<ul>\n<li>oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm<\/li>\n<li>oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm<\/li>\n<li>oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm<\/li>\n<\/ul>\n<p>&#8230;et le fichier source du drivers \u00e0 partir du <a href=\"http:\/\/search.cpan.org\/~pythian\/DBD-Oracle-1.66\/lib\/DBD\/Oracle.pm\">site CPAN<\/a>: DBD-Oracle-1.66.tar.gz.<\/p>\n<p>A partir du point de t\u00e9l\u00e9chargement, en tant qu&#8217;utilisateur root, passer les commandes suivantes:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">rpm -iv oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\nrpm -iv oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm \nrpm -iv oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm<\/pre>\n<p>Ces trois paquets cr\u00e9ent une arborescence oracle dans \/usr\/lib : oracle\/11.2\/client64\/lib &amp; oracle\/11.2\/client64\/bin<\/p>\n<p>Afin de tester la bonne installation des paquets, il est possible de tenter une connexion \u00e0 votre base de donn\u00e9es Oracle avec l&#8217;utilitaire sqlplus se trouvant dans le r\u00e9pertoire \/usr\/lib\/oracle\/11.2\/client64\/bin.<\/p>\n<p>Toutefois, il est n\u00e9cessaire de positionner l&#8217;environnement sur les librairies dynamiques de ce client. Cela se fait en positionnant la variable LD_LIBRARY_PATH \u00e0 la valeur: \/usr\/lib\/oracle\/11.2\/client64\/bin<\/p>\n<h3>Validation<\/h3>\n<p>Dans notre cas, la v\u00e9rification se fait ainsi:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">export ORACLE_HOME=\/usr\/lib\/oracle\/11.2\/client64\nexport LD_LIBRARY_PATH=$ORACLE_HOME\/lib\nexport PATH=$ORACLE_HOME\/bin:$PATHsqlplus\u00a0 system\/manager@vmtestora11g:1521\/MSC_SITE1.localhostSQL*Plus\"\nSQL*Plus : Release 11.2.0.4.0 Production on Wed Oct 2 17:22:15 2013\nCopyright (c) 1982, 2013, Oracle.\u00a0 All rights reserved.\nConnected to:\nOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production\nWith the Partitioning, OLAP, Data Mining and Real Application Testing options\nSQL&gt; select instance_name from v$instance;INSTANCE_NAME\n----------------\nMSC\n SQL&gt; quit<\/pre>\n<p>&nbsp;<\/p>\n<h3>Installation de DBD::Oracle<\/h3>\n<p>Apr\u00e8s avoir d\u00e9compress\u00e9 le fichier t\u00e9l\u00e9charg\u00e9 depuis le CPAN et avoir positionn\u00e9 votre environnement, le fichier INSTALL vous donne les informations relatives \u00e0 l&#8217;installation.<\/p>\n<p>Le point important \u00e9tant de positionner votre environnement comme ci-dessus. Une fois cela fait, il est possible de commencer l&#8217;installation par la commande suivante:<br \/>\n<strong>perl Makefile.PL<\/strong><\/p>\n<p>Celle-ci va construire le makefile pour votre environnement apr\u00e8s avoir v\u00e9rifi\u00e9 les pr\u00e9-requis.<br \/>\nLa commande suivante, c&#8217;est le lancement de la compilation et de l&#8217;\u00e9dition de lien n\u00e9cessaires \u00e0 l&#8217;int\u00e9gration des librairies Oracle au driver perl DBD::Oracle.<br \/>\n<strong>make<\/strong><\/p>\n<p>En fin de construction, vous pouvez lancer l&#8217;installation par la commande:<br \/>\n<strong>make install<\/strong><\/p>\n<p>Ensuite, il est possible comme pour le driver DBD:Pg de tester la connexion \u00e0 la base Oracle cible.<\/p>\n<h3>Validation<\/h3>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">#!\/usr\/bin\/perl -w\n#\n# test Connects to an Oracle database.\n# \nuse DBI;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Load the DBI module\n#\u00a0 \n#\u00a0 ### Perform the connection using the Oracle driver\nmy $dbh = DBI-&gt;connect( \"dbi:Oracle:host=vmtestora11g;sid=MSC\", \"SIBMIG\", \"migora\" )\n\u00a0\u00a0\u00a0\u00a0\u00a0 or die \"Can't connect to Oracle database: $DBI::errstrn\";\nprint \"2+2=\",\n$dbh-&gt;selectrow_array(\"SELECT 2+2 from dual\"),\"n\";\n$rv = $dbh-&gt;disconnect;\nprint \"deconnection \", $rv,\"n\";\n exit;<\/pre>\n<p>Apr\u00e9s avoir valid\u00e9 cette connexion \u00e0 la base, au travers du driver DBD::Oracle, il est possible de passer \u00e0 l&#8217;installation de ora2pg.<\/p>\n<h3>Installation de Ora2pg<\/h3>\n<p>C&#8217;est la partie la plus simple \ud83d\ude09 de la mise en oeuvre de l&#8217;installation et de l&#8217;utilisation de ora2pg.<\/p>\n<p>Il s&#8217;agit juste de d\u00e9compresser dans un r\u00e9pertoire le fichier tar t\u00e9l\u00e9charg\u00e9 sur le <a href=\"http:\/\/sourceforge.net\/projects\/ora2pg\/\">site<\/a> puis de lancer en tant qu&#8217;utilisateur root, les deux commandes:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">[<a href=\"mailto:root@oel6ap01 ora2pg-11.4\">root@oel6ap01 ora2pg-11.4<\/a>]# perl Makefile.PLChecking if your kit is complete...\nLooks good\nWriting Makefile for Ora2PgDone...<\/pre>\n<p>Une fois ce makefile produit, on en lance l&#8217;\u00e9x\u00e9cution puis l&#8217;installation:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">make &amp;&amp; make install\ncp lib\/Ora2Pg.pm blib\/lib\/Ora2Pg.pm\ncp lib\/Ora2Pg\/PLSQL.pm blib\/lib\/Ora2Pg\/PLSQL.pm\ncp scripts\/ora2pg blib\/script\/ora2pg\n\/usr\/bin\/perl -MExtUtils::MY -e 'MY-&gt;fixin(shift)' -- blib\/script\/ora2pg\nManifying blib\/man3\/ora2pg.3\nInstalling \/usr\/local\/share\/perl5\/Ora2Pg.pm\nInstalling \/usr\/local\/share\/perl5\/Ora2Pg\/PLSQL.pm\nInstalling \/usr\/local\/share\/man\/man3\/ora2pg.3\nInstalling \/usr\/local\/bin\/ora2pg\nInstalling default configuration file (ora2pg.conf.dist) to \/etc\nAppending installation info to \/usr\/lib64\/perl5\/perllocal.pod<\/pre>\n<p>Nous sommes ainsi pr\u00eats pour tester l&#8217;installation et travailler avec ora2pg.<\/p>\n<h3>Utilisation d&#8217;Ora2pg<\/h3>\n<p>Dans ce premier post, nous allons juste v\u00e9rifier que nous pouvons travailler avec ora2pg en modifiant le fichier de configuration pour produire un rapport sur le sch\u00e9ma cible de notre migration.<\/p>\n<p>Depuis notre r\u00e9pertoire de travail, nous recopions le ..\/binary\/ora2pg-11.4\/ora2pg.conf.dist report.conf puis l&#8217;editons en modifiant les param\u00e8tres suivants:<\/p>\n<ul>\n<li>ORACLE_HOME\u00a0 \/usr\/lib\/oracle\/11.2\/client64<\/li>\n<li>ORACLE_DSN\u00a0\u00a0\u00a0 dbi:Oracle:host=vmtestora11g;sid=MSC<\/li>\n<li>ORACLE_USER\u00a0\u00a0\u00a0 SIBMIG<\/li>\n<li>\u00a0ORACLE_PWD\u00a0\u00a0\u00a0 xxxxxx<\/li>\n<li>SCHEMA\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 SIBMIG<\/li>\n<\/ul>\n<p>Une fois ces modifications fates, on peut lancer la g\u00e9n\u00e9ration d&#8217;un rapport sur le schema par la commande ci-dessous:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">ora2pg -t SHOW_REPORT\u00a0 --estimate_cost --cost_unit_value 10 --conf report.conf --dump_as_html &gt;sibmig.html\n[========================&gt;] 238\/238 tables (100.0%) end of scanning.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n[========================&gt;] 12\/12 objects types (100.0%) end of objects auditing.<\/pre>\n<p>&nbsp;<\/p>\n<p>De ce rapport dont voici un <a href=\"http:\/\/ora2pg.darold.net\/report.html\">exemple<\/a>, nous pouvons rapidement faire un tableau r\u00e9sumant la tache de migration de la base:<\/p>\n<p>&nbsp;<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"Selection_001.jpg\" href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_001.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"Selection_001.jpg\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_001.jpg\" alt=\"Selection_001.jpg\" width=\"440\" height=\"371\" \/><\/a><\/p>\n<h3>Conclusion<\/h3>\n<p>L&#8217;installation de l&#8217;outil est plut\u00f4t simple et nous permet, en peu de temps, de connaitre l&#8217;ampleur de la t\u00e2che qui nous attend.<br \/>\nNous aborderons dans le prochain article le d\u00e9roulement d&#8217;une migration en nous appuyant sur un cas concret.<\/p>\n<h3>Ref\u00e9rence documentaire<\/h3>\n<ul>\n<li><a href=\"http:\/\/ora2pg.darold.net\/install.html\">ora2pg site officiel<\/a><\/li>\n<li><a href=\"http:\/\/oreilly.com\/catalog\/perldbi\/chapter\/ch04.html\">Programming the perl DBI<\/a><\/li>\n<li><a href=\"http:\/\/www.microhowto.info\/howto\/connect_to_a_postgresql_database_using_perl_dbi.html\">Connect to a PostgreSQL database using Perl DBI<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d&#8217;un outil d&#8217;aide \u00e0 la migration d&#8217;une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L&#8217;utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu&#8217;un projet de migration doit affronter Le premier post porte sur l&#8217;installation d&#8217;ora2pg, un [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":2855,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198],"tags":[],"type_dbi":[],"class_list":["post-3293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-management"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Migration d&#039;Oracle vers PostgreSQL avec ora2pg - dbi Blog<\/title>\n<meta name=\"description\" content=\"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d&#039;un outil d&#039;aide \u00e0 la migration d&#039;une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L&#039;utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu&#039;un projet de migration doit affronter Le premier post porte sur l&#039;installation d&#039;ora2pg, un des outils disponibles sur internet.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migration d&#039;Oracle vers PostgreSQL avec ora2pg\" \/>\n<meta property=\"og:description\" content=\"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d&#039;un outil d&#039;aide \u00e0 la migration d&#039;une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L&#039;utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu&#039;un projet de migration doit affronter Le premier post porte sur l&#039;installation d&#039;ora2pg, un des outils disponibles sur internet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-11-28T06:32:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"Migration d&#8217;Oracle vers PostgreSQL avec ora2pg\",\"datePublished\":\"2013-11-28T06:32:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/\"},\"wordCount\":954,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/2e1ax_default_entry_postgresqlfr-logo.jpg\",\"articleSection\":[\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/\",\"name\":\"Migration d'Oracle vers PostgreSQL avec ora2pg - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/2e1ax_default_entry_postgresqlfr-logo.jpg\",\"datePublished\":\"2013-11-28T06:32:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"description\":\"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d'un outil d'aide \u00e0 la migration d'une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L'utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu'un projet de migration doit affronter Le premier post porte sur l'installation d'ora2pg, un des outils disponibles sur internet.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/2e1ax_default_entry_postgresqlfr-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/2e1ax_default_entry_postgresqlfr-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/migration-oracle-vers-postgresql-avec-ora2pg\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migration d&#8217;Oracle vers PostgreSQL avec ora2pg\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migration d'Oracle vers PostgreSQL avec ora2pg - dbi Blog","description":"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d'un outil d'aide \u00e0 la migration d'une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L'utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu'un projet de migration doit affronter Le premier post porte sur l'installation d'ora2pg, un des outils disponibles sur internet.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/","og_locale":"en_US","og_type":"article","og_title":"Migration d'Oracle vers PostgreSQL avec ora2pg","og_description":"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d'un outil d'aide \u00e0 la migration d'une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L'utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu'un projet de migration doit affronter Le premier post porte sur l'installation d'ora2pg, un des outils disponibles sur internet.","og_url":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/","og_site_name":"dbi Blog","article_published_time":"2013-11-28T06:32:00+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg","type":"image\/jpeg"}],"author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"Migration d&#8217;Oracle vers PostgreSQL avec ora2pg","datePublished":"2013-11-28T06:32:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/"},"wordCount":954,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg","articleSection":["Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/","url":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/","name":"Migration d'Oracle vers PostgreSQL avec ora2pg - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg","datePublished":"2013-11-28T06:32:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"description":"Le propos des trois posts PostgreSQL qui vont suivre, est de pr\u00e9senter: la mise en place d'un outil d'aide \u00e0 la migration d'une base Oracle, au sens du sch\u00e9ma, vers une base PostgreSQL L'utilisation de cet outil, nomm\u00e9 ora2pg Les difficult\u00e9s qu'un projet de migration doit affronter Le premier post porte sur l'installation d'ora2pg, un des outils disponibles sur internet.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_postgresqlfr-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migration d&#8217;Oracle vers PostgreSQL avec ora2pg"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=3293"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3293\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/2855"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=3293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=3293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=3293"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=3293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}