{"id":9983,"date":"2017-04-26T17:59:26","date_gmt":"2017-04-26T15:59:26","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/"},"modified":"2023-06-08T16:33:06","modified_gmt":"2023-06-08T14:33:06","slug":"migrating-from-oracle-to-postgresql-with-ora2pg","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/","title":{"rendered":"Migrating from oracle to postgresql with ora2pg"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>PostgreSQL is one of the most used Rdbms.<br \/>\nIn this blog we are going to talk about migrating from oracle to postgresql using ora2pg. A previous blog about this topic can be found <a href=\"https:\/\/www.dbi-services.com\/blog\/migration-oracle-vers-postgresql-avec-ora2pg\/\" target=\"_blank\" rel=\"noopener\">here<\/a>.<br \/>\nAfter installing ora2pg tool, we will see how to configure and to run it to migrate our data. We are using an oracle 12.1 database and a postgresql 9.6.2. The server is runing on OEL 7.2<br \/>\nThe oracle database and the postgresql server are running on the same server. But different servers can be used.<\/p>\n<p>To install ora2pg we need following:<br \/>\n-DBD-Oracle-1.75_2.tar.gz : Oracle database driver for the DBI module<br \/>\n-DBD-Pg-3.6.0.tar.gz : PostgreSQL database driver for the DBI module<br \/>\n-DBI-1.636.tar.gz : Database independent interface for Perl<br \/>\n-ora2pg-18.1.tar.gz : ora2pg archive<\/p>\n<p>The DBI modules can be found <a href=\"http:\/\/search.cpan.org\/\" target=\"_blank\" rel=\"noopener\">here<\/a><br \/>\nAnd the ora2pg can be downloaded from <a href=\"https:\/\/sourceforge.net\/projects\/ora2pg\/\" target=\"_blank\" rel=\"noopener\"> here <\/a><\/p>\n<p>Install DBI module<br \/>\n<code>[root@serveroracle postgres]#tar xvzf DBI-1.636.tar.gz<br \/>\n[root@serveroracle postgres]#cd DBI-1.636<br \/>\n[root@serveroracle postgres]#perl Makefile.Pl<br \/>\n[root@serveroracle postgres]#make<br \/>\n[root@serveroracle postgres]#make install<br \/>\n<\/code><\/p>\n<p>Install DBD-Oracle<br \/>\n<code>[root@serveroracle postgres]# tar xvzf  DBD-Oracle-1.75_2.tar.gz<br \/>\n[root@serveroracle postgres]# cd DBD-Oracle-1.75_2\/<br \/>\n[root@serveroracle DBD-Oracle-1.75_2]# export ORACLE_HOME=\/u01\/app\/oracle\/product\/12.1.0\/dbhome_1<br \/>\n[root@serveroracle DBD-Oracle-1.75_2]# export LD_LIBRARY_PATH=\/u01\/app\/oracle\/product\/12.1.0\/dbhome_1\/lib<br \/>\n[root@serveroracle DBD-Oracle-1.75_2]# perl Makefile.PL<br \/>\n[root@serveroracle DBD-Oracle-1.75_2]# make<br \/>\n[root@serveroracle DBD-Oracle-1.75_2]# make install<br \/>\n<\/code><\/p>\n<p>Install DBD-Pg<br \/>\n<code>[root@serveroracle postgres]# tar xvzf DBD-Pg-3.6.0.tar.gz<br \/>\n[root@serveroracle postgres]# cd DBD-Pg-3.6.0<br \/>\n[root@serveroracle DBD-Pg-3.6.0]# perl Makefile.PL<br \/>\nConfiguring DBD::Pg 3.6.0<br \/>\nPath to pg_config? \/u01\/app\/postgres\/product\/96\/db_2\/bin\/pg_config<br \/>\n[root@serveroracle DBD-Pg-3.6.0]# make<br \/>\n[root@serveroracle DBD-Pg-3.6.0]# make install<br \/>\n<\/code><br \/>\nWhen we first run the command perl MakeFile.PL, we got following errors<br \/>\n<code>[root@serveroracle DBD-Pg-3.6.0]# perl Makefile.PL<br \/>\nConfiguring DBD::Pg 3.6.0<br \/>\nPostgreSQL version: 90602 (default port: 5432)<br \/>\nPOSTGRES_HOME: \/u01\/app\/postgres\/product\/96\/db_2<br \/>\nPOSTGRES_INCLUDE: \/u01\/app\/postgres\/product\/96\/db_2\/include<br \/>\nPOSTGRES_LIB: \/u01\/app\/postgres\/product\/96\/db_2\/lib<br \/>\nOS: linux<br \/>\nWarning: prerequisite version 0 not found.<br \/>\nCould not eval '<br \/>\npackage ExtUtils::MakeMaker::_version;<br \/>\nno strict;<br \/>\nBEGIN { eval {<br \/>\n# Ensure any version() routine which might have leaked<br \/>\n# into this package has been deleted.  Interferes with<br \/>\n# version-&gt;import()<br \/>\nundef *version;<br \/>\nrequire version;<br \/>\n\"version\"-&gt;import;<br \/>\n} }<br \/>\nlocal $VERSION;<br \/>\n$VERSION=undef;<br \/>\ndo {<br \/>\nuse version; our $VERSION = qv('3.6.0');<br \/>\n};<br \/>\n$VERSION;<br \/>\n' in Pg.pm: Can't locate version.pm in @INC (@INC contains: t\/lib \/usr\/local\/lib64\/perl5 \/usr\/local\/share\/perl5 \/usr\/lib64\/perl5\/vendor_perl \/usr\/share\/perl5\/vendor_perl \/usr\/lib64\/perl5 \/usr\/share\/perl5 .) at (eval 11) line 16,  line 19.<br \/>\nBEGIN failed--compilation aborted at (eval 11) line 16,  line 19.<br \/>\nWARNING: Setting VERSION via file 'Pg.pm' failed<br \/>\nat \/usr\/share\/perl5\/vendor_perl\/ExtUtils\/MakeMaker.pm line 619.<br \/>\nUsing DBI 1.636 (for perl 5.016003 on x86_64-linux-thread-multi) installed in \/usr\/local\/lib64\/perl5\/auto\/DBI\/<br \/>\nWriting Makefile for DBD::Pg<br \/>\n<\/code><br \/>\nWe correct errors by running the command below.<br \/>\n<code>[root@serveroracle DBD-Pg-3.6.0]# yum -y install 'perl(version)'<br \/>\nLoaded plugins: langpacks, ulninfo<br \/>\nResolving Dependencies<br \/>\n--&gt; Running transaction check<br \/>\n---&gt; Package perl-version.x86_64 3:0.99.07-2.el7 will be installed<br \/>\n--&gt; Finished Dependency Resolution<br \/>\n<\/code><\/p>\n<p>Install ora2pg<br \/>\n<code><br \/>\n[postgres@serveroracle ~]$ tar xvzf ora2pg-18.1.tar.gz<br \/>\n[root@serveroracle postgres]# cd ora2pg-18.1\/<br \/>\n[root@serveroracle postgres]# perl Makefile.PL<br \/>\n[root@serveroracle postgres]# make<br \/>\n[root@serveroracle postgres]# make install<br \/>\n<\/code><\/p>\n<p><code><br \/>\n[root@serveroracle postgres]# ora2pg -version<br \/>\nOra2Pg v18.1<br \/>\n[root@serveroracle postgres]#<br \/>\n<\/code><\/p>\n<p>Now that ora2pg is installed, we can proceed with the migration. The first step is to configure the <span style=\"color: #ea6d14\">ora2pg.conf<\/span> file. We can do a copy of the default template and then modify the file. In our case the configuration file is located in <span style=\"color: #ea6d14\">\/etc\/ora2pg<\/span> directory.<br \/>\n<code><br \/>\n[root@serveroracle ora2pg]# cp ora2pg.conf.dist ora2pg.conf<br \/>\n[root@serveroracle ora2pg]# vi ora2pg.conf<br \/>\n<\/code><br \/>\nIn our configuration file, following changes where done. We are exporting only the HR schema<br \/>\n<code><br \/>\nORACLE_DSN      dbi:Oracle:host=serveroracle.localdomain;sid=ORCL<br \/>\nORACLE_USER     system<br \/>\nORACLE_PWD      root<br \/>\nSCHEMA          HR<br \/>\nTYPE       TABLE  PACKAGE COPY VIEW GRANT SEQUENCE TRIGGER FUNCTION PROCEDURE TABLESPACE TYPE PARTITION<br \/>\nOUTPUT          HR_output.sql<br \/>\n<\/code><br \/>\nora2pg works by exporting and importing schemas. We can only export one schema at a time if we use the option SCHEMA. If we want to export all schemas we can just comment the option SCHEMA. In this case all non-oracle users will be extracted.<br \/>\nIn the documentation we also have the option SYSUSERS<br \/>\n<code># Allow to add a comma separated list of system user to exclude from<br \/>\n# from Oracle extraction. Oracle have many of them following the modules<br \/>\n# installed. By default it will suppress all object owned by the following<br \/>\n# system users:<br \/>\n#        CTXSYS,DBSNMP,EXFSYS,LBACSYS,MDSYS,MGMT_VIEW,OLAPSYS,ORDDATA,OWBSYS,<br \/>\n#        ORDPLUGINS,ORDSYS,OUTLN,SI_INFORMTN_SCHEMA,SYS,SYSMAN,SYSTEM,WK_TEST,<br \/>\n#        WKSYS,WKPROXY,WMSYS,XDB,APEX_PUBLIC_USER,DIP,FLOWS_020100,FLOWS_030000,<br \/>\n#        FLOWS_040100,FLOWS_FILES,MDDATA,ORACLE_OCM,SPATIAL_CSW_ADMIN_USR,<br \/>\n#        SPATIAL_WFS_ADMIN_USR,XS$NULL,PERFSTAT,SQLTXPLAIN,DMSYS,TSMSYS,WKSYS,<br \/>\n#        APEX_040200,DVSYS,OJVMSYS,GSMADMIN_INTERNAL,APPQOSSYS<br \/>\n# Other list of users set to this directive will be added to this list.<br \/>\n#SYSUSERS       OE,HR<br \/>\n<\/code><br \/>\nOnce configuration done, we can run the orap2g command. Note that you can see all options by running ora2pg -help<br \/>\n<code>[root@serveroracle ora2pg]# ora2pg<br \/>\n[========================&gt;] 7\/7 tables (100.0%) end of scanning.<br \/>\n[&gt;                        ] 0\/7 tables (0.0%) end of scanning.<br \/>\n[========================&gt;] 7\/7 tables (100.0%) end of table export.<br \/>\n[========================&gt;] 0\/0 packages (100.0%) end of output.<br \/>\n[========================&gt;] 25\/25 rows (100.0%) Table COUNTRIES (25 recs\/sec)<br \/>\n[==&gt;                      ]  25\/215 total rows (11.6%) - (0 sec., avg: 25 recs\/sec).<br \/>\n[========================&gt;] 27\/27 rows (100.0%) Table DEPARTMENTS (27 recs\/sec)<br \/>\n[=====&gt;                   ]  52\/215 total rows (24.2%) - (1 sec., avg: 52 recs\/sec).<br \/>\n[========================&gt;] 107\/107 rows (100.0%) Table EMPLOYEES (107 recs\/sec)<br \/>\n[=================&gt;       ] 159\/215 total rows (74.0%) - (1 sec., avg: 159 recs\/sec).<br \/>\n[========================&gt;] 19\/19 rows (100.0%) Table JOBS (19 recs\/sec)<br \/>\n[===================&gt;     ] 178\/215 total rows (82.8%) - (1 sec., avg: 178 recs\/sec).<br \/>\n[========================&gt;] 10\/10 rows (100.0%) Table JOB_HISTORY (10 recs\/sec)<br \/>\n[====================&gt;    ] 188\/215 total rows (87.4%) - (2 sec., avg: 94 recs\/sec).<br \/>\n[========================&gt;] 23\/23 rows (100.0%) Table LOCATIONS (23 recs\/sec)<br \/>\n[=======================&gt; ] 211\/215 total rows (98.1%) - (2 sec., avg: 105 recs\/sec).<br \/>\n[========================&gt;] 4\/4 rows (100.0%) Table REGIONS (4 recs\/sec)<br \/>\n[========================&gt;] 215\/215 total rows (100.0%) - (3 sec., avg: 71 recs\/sec).<br \/>\n[========================&gt;] 215\/215 rows (100.0%) on total estimated data (3 sec., avg: 71 recs\/sec)<br \/>\n[========================&gt;] 1\/1 views (100.0%) end of output.<br \/>\n[========================&gt;] 3\/3 sequences (100.0%) end of output.<br \/>\n[========================&gt;] 1\/1 triggers (100.0%) end of output.<br \/>\n[========================&gt;] 0\/0 functions (100.0%) end of output.<br \/>\n[========================&gt;] 2\/2 procedures (100.0%) end of output.<br \/>\n[========================&gt;] 0\/0 types (100.0%) end of output.<br \/>\n[========================&gt;] 0\/0 partitions (100.0%) end of output.<br \/>\n[root@serveroracle ora2pg]#<br \/>\n<\/code><\/p>\n<p>Once finished, a file HR_output.sql is generated. This file can be used to load data in the postgresql database. We can also load data directly without using a file. We just have to specify the connection info for the postgresql.<br \/>\nLet\u2019s know prepare the postgresql server to receive our data. First we create the user HR.<br \/>\n<code><br \/>\n[postgres@serveroracle ~]$ psql<br \/>\npsql (9.6.2 dbi services build)<br \/>\nType \"help\" for help.<br \/>\npostgres=# c orclpg<br \/>\nYou are now connected to database \"orclpg\" as user \"postgres\".<br \/>\norclpg=# create user HR WITH PASSWORD 'root';<br \/>\n<\/code><br \/>\nAnd then we can execute the file. The first time we ran the file, we had some constraints errors<br \/>\n<code><br \/>\norclpg=# i HR_output.sql<br \/>\nERROR:  insert or update on table \"countries\" violates foreign key constraint \"countr_reg_fk\"<br \/>\nDETAIL:  Key (region_id)=(2) is not present in table \"regions\".<br \/>\nSTATEMENT:  COPY countries (country_id,country_name,region_id) FROM STDIN;<br \/>\npsql:HR_output.sql:224: ERROR:  insert or update on table \"countries\" violates foreign key constraint \"countr_reg_fk\"<br \/>\nDETAIL:  Key (region_id)=(2) is not present in table \"regions\".<br \/>\norclpg=#<br \/>\n<\/code><br \/>\nTo correct this, we put the option in the configuration file DROP_FKEY to 1<br \/>\n<code><br \/>\nDROP_FKEY       1<br \/>\n<\/code><br \/>\nWith this option all foreign keys will be dropped before all data import and recreate them at the end of the import. After the load was successful.<br \/>\n<code><br \/>\norclpg=# i HR_output.sql<br \/>\nSET<br \/>\nCREATE SCHEMA<br \/>\nALTER SCHEMA<br \/>\nSET<br \/>\nCREATE TABLE<br \/>\nCOMMENT<br \/>\nSET<br \/>\nSET<br \/>\nSET<br \/>\nSET<br \/>\nSET<br \/>\nBEGIN<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nSET<br \/>\nCOPY 107<br \/>\nSET<br \/>\nCOPY 19<br \/>\nSET<br \/>\nCOPY 10<br \/>\nSET<br \/>\nCOPY 23<br \/>\nSET<br \/>\nCOPY 4<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\n\u2026<br \/>\n\u2026<br \/>\nCOMMIT<br \/>\n<\/code><br \/>\nWe can verify that tables were created and that data were inserted.<\/p>\n<p><code><br \/>\norclpg=# d<br \/>\nList of relations<br \/>\nSchema |    Name     | Type  |  Owner<br \/>\n--------+-------------+-------+----------<br \/>\nhr     | countries   | table | postgres<br \/>\nhr     | departments | table | postgres<br \/>\nhr     | employees   | table | postgres<br \/>\nhr     | job_history | table | postgres<br \/>\nhr     | jobs        | table | postgres<br \/>\nhr     | locations   | table | postgres<br \/>\nhr     | regions     | table | postgres<br \/>\n(7 rows)<\/code><\/p>\n<p><code><br \/>\n<\/code><\/p>\n<p><code>orclpg=# select count(*) from countries;<br \/>\ncount<br \/>\n-------<br \/>\n25<br \/>\n(1 row)<br \/>\norclpg=#<br \/>\n<\/code><br \/>\n<b>Conclusion<\/b><br \/>\nAs we can see ora2pg is a free easy tool to migrate data from oracle to postgresql. In coming blog we will talk about other tools that can be used to move data from oracle to postgresql<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw PostgreSQL is one of the most used Rdbms. In this blog we are going to talk about migrating from oracle to postgresql using ora2pg. A previous blog about this topic can be found here. After installing ora2pg tool, we will see how to configure and to run it to migrate our data. [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[1079,1080],"type_dbi":[],"class_list":["post-9983","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-migration-oracle-postgresql","tag-ora2pg"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Migrating from oracle to postgresql with ora2pg - dbi Blog<\/title>\n<meta name=\"description\" content=\"Migration oracle postgresql, oracle 12, postgresql 96\" \/>\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\/migrating-from-oracle-to-postgresql-with-ora2pg\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating from oracle to postgresql with ora2pg\" \/>\n<meta property=\"og:description\" content=\"Migration oracle postgresql, oracle 12, postgresql 96\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-26T15:59:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-08T14:33:06+00:00\" \/>\n<meta name=\"author\" content=\"Oracle 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=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 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\/migrating-from-oracle-to-postgresql-with-ora2pg\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Migrating from oracle to postgresql with ora2pg\",\"datePublished\":\"2017-04-26T15:59:26+00:00\",\"dateModified\":\"2023-06-08T14:33:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\"},\"wordCount\":500,\"commentCount\":2,\"keywords\":[\"migration oracle postgresql\",\"ora2pg\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\",\"name\":\"Migrating from oracle to postgresql with ora2pg - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-04-26T15:59:26+00:00\",\"dateModified\":\"2023-06-08T14:33:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"Migration oracle postgresql, oracle 12, postgresql 96\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating from oracle to postgresql with 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\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrating from oracle to postgresql with ora2pg - dbi Blog","description":"Migration oracle postgresql, oracle 12, postgresql 96","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\/migrating-from-oracle-to-postgresql-with-ora2pg\/","og_locale":"en_US","og_type":"article","og_title":"Migrating from oracle to postgresql with ora2pg","og_description":"Migration oracle postgresql, oracle 12, postgresql 96","og_url":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/","og_site_name":"dbi Blog","article_published_time":"2017-04-26T15:59:26+00:00","article_modified_time":"2023-06-08T14:33:06+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Migrating from oracle to postgresql with ora2pg","datePublished":"2017-04-26T15:59:26+00:00","dateModified":"2023-06-08T14:33:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/"},"wordCount":500,"commentCount":2,"keywords":["migration oracle postgresql","ora2pg"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/","url":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/","name":"Migrating from oracle to postgresql with ora2pg - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-04-26T15:59:26+00:00","dateModified":"2023-06-08T14:33:06+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"Migration oracle postgresql, oracle 12, postgresql 96","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/migrating-from-oracle-to-postgresql-with-ora2pg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating from oracle to postgresql with 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\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9983","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=9983"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9983\/revisions"}],"predecessor-version":[{"id":25695,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9983\/revisions\/25695"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9983"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}