{"id":11751,"date":"2018-10-08T15:28:26","date_gmt":"2018-10-08T13:28:26","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/"},"modified":"2018-10-08T15:28:26","modified_gmt":"2018-10-08T13:28:26","slug":"from-oracle-to-postgres-with-the-edb-postgres-migration-portal","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/","title":{"rendered":"From Oracle to Postgres with the EDB Postgres Migration Portal"},"content":{"rendered":"<p>EnterpriseDB is a valuable actor in PostgreSQL&#8217;s world. In addition to provide support, they also deliver very useful tools to manage easily your Postgres environments. Among these we can mention EDB Enterprise Manager, EDB Backup &amp; Recovery Tool, EDB Failover Manager, aso&#8230;<br \/>\nWith this post I will present one of the last in the family, EDB Postgres Migration Portal, a helpful tool to migrate from Oracle to Postgres.<\/p>\n<p>To acces to <a href=\"https:\/\/www.enterprisedb.com\/edb-postgres-migration-portal\" target=\"_blank\" rel=\"noopener noreferrer\">the Portal<\/a>, use your EDB account or create one if you don&#8217;t have. By the way, with your account you can also connect to <a href=\"https:\/\/postgresrocks.enterprisedb.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PostgresRocks<\/a>, a very interesting community platform. Go take a look \ud83d\ude42 .<\/p>\n<p>Once connected, click on &#8220;Create project&#8221; :<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-28243\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\" alt=\"1\" width=\"1024\" height=\"411\" \/><\/a><\/p>\n<p>Fulfill the fields and click on &#8220;Create&#8221;. Currently it is only possible to migrate from Oracle 11 or 12 to Postgres EDB Advanced Server 10 :<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-28247\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2-1.png\" alt=\"2\" width=\"1024\" height=\"248\" \/><\/a><\/p>\n<p>All your projects are displayed at the bottom of the page. Click on the &#8220;Assess&#8221; link to continue :<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/3-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-28249\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/3-2.png\" alt=\"3\" width=\"1024\" height=\"103\" \/><\/a><\/p>\n<p>The migration steps consist of the following :<\/p>\n<ol>\n<li>Extracting the DDL metadata from Oracle database using the <a href=\"https:\/\/migration.enterprisedb.com\/edb_ddl_extractor.sql\">EDB\u2019s DDL Extractor<\/a> script<\/li>\n<li>Running assessment<\/li>\n<li>Correcting conflicts<\/li>\n<li>Downloading and running the new DDL statements adapted to your EDB Postgres database<\/li>\n<li>Migrating data<\/li>\n<\/ol>\n<h3>1. Extracting the DDL metadata from Oracle database<\/h3>\n<p>The DDL Extractor script is easy to use. You just need to specify the schema name to extract the DDLs and the path to store the DDLs file. As you can guess, the script run the Oracle <em>dbms_metadata.get_dll<\/em> package to extract objects definitions :<br \/>\n<code>Connected to:<br \/>\nOracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br \/>\nWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br \/>\n<br \/>\nSQL&gt; <span style=\"color: orange\">select object_type, count(*) from dba_objects where owner='HR' and status='VALID' group by object_type order by 1;<\/span><br \/>\n<br \/>\nOBJECT_TYPE\t\t  COUNT(*)<br \/>\n----------------------- ----------<br \/>\nINDEX\t\t\t\t19<br \/>\nPROCEDURE\t\t\t 2<br \/>\nSEQUENCE\t\t\t 3<br \/>\nTABLE\t\t\t\t 7<br \/>\nTRIGGER \t\t\t 2<br \/>\n<br \/>\nSQL&gt;<\/code><br \/>\n<code>SQL&gt; <span style=\"color: orange\">@edb_ddl_extractor.sql<\/span> <br \/>\n# -- EDB DDL Extractor Version 1.2 for Oracle Database -- #<br \/>\n# ------------------------------------------------------- #<br \/>\nEnter SCHEMA NAME to extract DDLs  : <span style=\"color: orange\">HR<\/span><br \/>\nEnter  PATH  to store DDL file\t: <span style=\"color: orange\">\/home\/oracle\/migration<\/span><br \/>\n<\/br><br \/>\nWriting HR DDLs to \/home\/oracle\/migration_gen_hr_ddls.sql<br \/>\n####################################################################################################################<br \/>\n## DDL EXTRACT FOR EDB POSTGRES MIGRATION PORTAL CREATED ON 03-10-2018 21:41:27 BY DDL EXTRACTION SCRIPT VERSION 1.2<br \/>\n##<br \/>\n## SOURCE DATABASE VERSION: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br \/>\n####################################################################################################################<br \/>\nExtracting SYNONYMS...<br \/>\nExtracting DATABASE LINKS...<br \/>\nExtracting TYPE\/TYPE BODY...<br \/>\nExtracting SEQUENCES...<br \/>\nExtracting TABLEs...<br \/>\nExtracting PARTITION Tables...<br \/>\nExtracting CACHE Tables...<br \/>\nExtracting CLUSTER Tables...<br \/>\nExtracting KEEP Tables...<br \/>\nExtracting INDEX ORGANIZED Tables...<br \/>\nExtracting COMPRESSED Tables...<br \/>\nExtracting NESTED Tables...<br \/>\nExtracting EXTERNAL Tables..<br \/>\nExtracting INDEXES...<br \/>\nExtracting CONSTRAINTS...<br \/>\nExtracting VIEWs..<br \/>\nExtracting MATERIALIZED VIEWs...<br \/>\nExtracting TRIGGERs..<br \/>\nExtracting FUNCTIONS...<br \/>\nExtracting PROCEDURE...<br \/>\nExtracting PACKAGE\/PACKAGE BODY...<br \/>\n<\/br><br \/>\nDDLs for Schema HR have been stored in \/home\/oracle\/migration_gen_hr_ddls.sql<br \/>\nUpload this file to the EDB Migration Portal to assess this schema for EDB Advanced Server Compatibility.<br \/>\n<\/br><br \/>\nDisconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br \/>\nWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br \/>\noracle@vmrefdba01:\/home\/oracle\/migration\/ [DB1]<\/code><\/p>\n<h3>2. Assessment<\/h3>\n<p>Go back to your browser. It&#8217;s time to check if the Oracle schema can be imported to Postgres or not. Upload the output file&#8230;<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/4-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/4-1.png\" alt=\"4\" width=\"1024\" height=\"501\" class=\"aligncenter size-large wp-image-28275\" \/><\/a>&#8230;and click on &#8220;Run assessment&#8221; to start the check.<br \/>\nThe result is presented as follow :<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/6-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/6-2.png\" alt=\"6\" width=\"1024\" height=\"226\" class=\"aligncenter size-large wp-image-28280\" \/><\/a><\/p>\n<h3>3. Correcting conflicts <\/h3>\n<p>We can notice an issue in the report above&#8230; the bfile type is not supported by EDB PPAS. You can click on the concerned table to get more details about the issue :<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/7-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/7-2.png\" alt=\"7\" width=\"1024\" height=\"376\" class=\"aligncenter size-large wp-image-28286\" \/><\/a>Tips : when you want to manage bfile columns in Postgres, you can use the <a href=\"https:\/\/github.com\/darold\/external_file\" target=\"_blank\" rel=\"noopener noreferrer\">external_file<\/a> extension.<br \/>\nOf course several other conversion issues can happen. A very good point with the Portal is that it provide a knowledge base to solve conflicts. You will find all necessary information and workarounds by navigating to the &#8220;Repair handler&#8221; and &#8220;Knowledge base&#8221; tabs. Moreover, you can do the corrections directly from the Portal.<\/p>\n<h3>4. Creating the objects in Postgres database<\/h3>\n<p>Once you have corrected the conflicts and the assess report indicates a 100% success ratio, click on the top right &#8220;Export DLL&#8221; button to download the new creation script adapted for Postgres EDB :<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/8-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/8-2.png\" alt=\"8\" width=\"1024\" height=\"272\" class=\"aligncenter size-large wp-image-28294\" \/><\/a><br \/>\nThen connect to your Postgres instance and run the script :<br \/>\n<code>postgres=# <span style=\"color: orange\">\\i Demo_HR.sql<\/span><br \/>\nCREATE SCHEMA<br \/>\nSET<br \/>\nCREATE SEQUENCE<br \/>\nCREATE SEQUENCE<br \/>\nCREATE SEQUENCE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE TABLE<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nCREATE INDEX<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nALTER TABLE<br \/>\nCREATE PROCEDURE<br \/>\nCREATE PROCEDURE<br \/>\nCREATE TRIGGER<br \/>\nCREATE TRIGGER<br \/>\npostgres=#<br \/>\n<\/code><br \/>\nQuick check :<br \/>\n<code>postgres=# <span style=\"color: orange\">select object_type, count(*) from dba_objects where schema_name='HR' and status='VALID' group by object_type order by 1;<\/span><br \/>\n object_type | count<br \/>\n-------------+-------<br \/>\n INDEX       |    19<br \/>\n PROCEDURE   |     2<br \/>\n SEQUENCE    |     3<br \/>\n TABLE       |     7<br \/>\n TRIGGER     |     2<br \/>\n(5 rows)<\/code><\/p>\n<p>Sounds good ! All objects have been created successfully.<\/p>\n<h3>5. Migrating data<\/h3>\n<p>The Migration Portal doesn&#8217;t provide an embedded solution to import the data. So to do that you can use the <a href=\"https:\/\/www.enterprisedb.com\/fr\/edb-postgres-migration-toolkit\" target=\"_blank\" rel=\"noopener noreferrer\">EDB Migration Tool Kit<\/a>.<br \/>\nLet see how it works&#8230;<br \/>\nYou will find MTK in the <em>edbmtk<\/em> directory of the {PPAS_HOME}. Inside etc the <em>toolkit.properties<\/em> file is used to store the connection parameters to the source &amp; target database :<br \/>\n<code>postgres@ppas01:\/u01\/app\/postgres\/product\/10edb\/edbmtk\/etc\/ [PG10edb] <span style=\"color: orange\">cat toolkit.properties<\/span><br \/>\nSRC_DB_URL=jdbc:oracle:thin:@192.168.22.101:1521:DB1<br \/>\nSRC_DB_USER=system<br \/>\nSRC_DB_PASSWORD=manager<br \/>\n<br \/>\nTARGET_DB_URL=jdbc:edb:\/\/localhost:5444\/postgres<br \/>\nTARGET_DB_USER=postgres<br \/>\nTARGET_DB_PASSWORD=admin123<br \/>\npostgres@ppas01:\/u01\/app\/postgres\/product\/10edb\/edbmtk\/etc\/ [PG10edb]<\/code><\/p>\n<p>MTK use JDBC to connect to the Oracle database. You need to download the <a href=\"https:\/\/www.oracle.com\/technetwork\/database\/application-development\/jdbc\/downloads\/jdbc-ucp-183-5013470.html\" target=\"_blank\" rel=\"noopener noreferrer\">Oracle JDBC driver<\/a> (ojdbc7.jar) and to store it in the following location :<br \/>\n<code>postgres@ppas01:\/home\/postgres\/ [PG10edb] <span style=\"color: orange\">ll \/etc\/alternatives\/jre\/lib\/ext\/<\/span><br \/>\ntotal 11424<br \/>\n-rw-r--r--. 1 root root 4003800 Oct 20  2017 cldrdata.jar<br \/>\n-rw-r--r--. 1 root root    9445 Oct 20  2017 dnsns.jar<br \/>\n-rw-r--r--. 1 root root   48733 Oct 20  2017 jaccess.jar<br \/>\n-rw-r--r--. 1 root root 1204766 Oct 20  2017 localedata.jar<br \/>\n-rw-r--r--. 1 root root     617 Oct 20  2017 meta-index<br \/>\n-rw-r--r--. 1 root root 2032243 Oct 20  2017 nashorn.jar<br \/>\n-rw-r--r--. 1 root root 3699265 Jun 17  2016 <strong>ojdbc7.jar<\/strong><br \/>\n-rw-r--r--. 1 root root   30711 Oct 20  2017 sunec.jar<br \/>\n-rw-r--r--. 1 root root  293981 Oct 20  2017 sunjce_provider.jar<br \/>\n-rw-r--r--. 1 root root  267326 Oct 20  2017 sunpkcs11.jar<br \/>\n-rw-r--r--. 1 root root   77962 Oct 20  2017 zipfs.jar<br \/>\npostgres@ppas01:\/home\/postgres\/ [PG10edb]<\/code><\/p>\n<p>As HR&#8217;s objects already exist, let&#8217;s start the data migration with the -dataOnly option :<br \/>\n<code>postgres@ppas01:\/u01\/app\/postgres\/product\/10edb\/edbmtk\/bin\/ [PG10edb] <span style=\"color: orange\">.\/runMTK.sh -dataOnly -truncLoad -logBadSQL HR<\/span><br \/>\nRunning EnterpriseDB Migration Toolkit (Build 51.0.1) ...<br \/>\nSource database connectivity info...<br \/>\nconn =jdbc:oracle:thin:@192.168.22.101:1521:DB1<br \/>\nuser =system<br \/>\npassword=******<br \/>\nTarget database connectivity info...<br \/>\nconn =jdbc:edb:\/\/localhost:5444\/postgres<br \/>\nuser =postgres<br \/>\npassword=******<br \/>\nConnecting with source Oracle database server...<br \/>\nConnected to Oracle, version 'Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br \/>\nWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing options'<br \/>\nConnecting with target EDB Postgres database server...<br \/>\nConnected to EnterpriseDB, version '10.5.12'<br \/>\nImporting redwood schema HR...<br \/>\nLoading Table Data in 8 MB batches...<br \/>\nDisabling FK constraints &amp; triggers on hr.countries before truncate...<br \/>\nTruncating table COUNTRIES before data load...<br \/>\nDisabling indexes on hr.countries before data load...<br \/>\nLoading Table: COUNTRIES ...<br \/>\n[COUNTRIES] Migrated 25 rows.<br \/>\n[COUNTRIES] Table Data Load Summary: Total Time(s): 0.054 Total Rows: 25<br \/>\nDisabling FK constraints &amp; triggers on hr.departments before truncate...<br \/>\nTruncating table DEPARTMENTS before data load...<br \/>\nDisabling indexes on hr.departments before data load...<br \/>\nLoading Table: DEPARTMENTS ...<br \/>\n[DEPARTMENTS] Migrated 27 rows.<br \/>\n[DEPARTMENTS] Table Data Load Summary: Total Time(s): 0.046 Total Rows: 27<br \/>\nDisabling FK constraints &amp; triggers on hr.employees before truncate...<br \/>\nTruncating table EMPLOYEES before data load...<br \/>\nDisabling indexes on hr.employees before data load...<br \/>\nLoading Table: EMPLOYEES ...<br \/>\n[EMPLOYEES] Migrated 107 rows.<br \/>\n[EMPLOYEES] Table Data Load Summary: Total Time(s): 0.168 Total Rows: 107 Total Size(MB): 0.0087890625<br \/>\nDisabling FK constraints &amp; triggers on hr.jobs before truncate...<br \/>\nTruncating table JOBS before data load...<br \/>\nDisabling indexes on hr.jobs before data load...<br \/>\nLoading Table: JOBS ...<br \/>\n[JOBS] Migrated 19 rows.<br \/>\n[JOBS] Table Data Load Summary: Total Time(s): 0.01 Total Rows: 19<br \/>\nDisabling FK constraints &amp; triggers on hr.job_history before truncate...<br \/>\nTruncating table JOB_HISTORY before data load...<br \/>\nDisabling indexes on hr.job_history before data load...<br \/>\nLoading Table: JOB_HISTORY ...<br \/>\n[JOB_HISTORY] Migrated 10 rows.<br \/>\n[JOB_HISTORY] Table Data Load Summary: Total Time(s): 0.035 Total Rows: 10<br \/>\nDisabling FK constraints &amp; triggers on hr.locations before truncate...<br \/>\nTruncating table LOCATIONS before data load...<br \/>\nDisabling indexes on hr.locations before data load...<br \/>\nLoading Table: LOCATIONS ...<br \/>\n[LOCATIONS] Migrated 23 rows.<br \/>\n[LOCATIONS] Table Data Load Summary: Total Time(s): 0.053 Total Rows: 23 Total Size(MB): 9.765625E-4<br \/>\nDisabling FK constraints &amp; triggers on hr.regions before truncate...<br \/>\nTruncating table REGIONS before data load...<br \/>\nDisabling indexes on hr.regions before data load...<br \/>\nLoading Table: REGIONS ...<br \/>\n[REGIONS] Migrated 4 rows.<br \/>\n[REGIONS] Table Data Load Summary: Total Time(s): 0.025 Total Rows: 4<br \/>\nEnabling FK constraints &amp; triggers on hr.countries...<br \/>\nEnabling indexes on hr.countries after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.departments...<br \/>\nEnabling indexes on hr.departments after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.employees...<br \/>\nEnabling indexes on hr.employees after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.jobs...<br \/>\nEnabling indexes on hr.jobs after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.job_history...<br \/>\nEnabling indexes on hr.job_history after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.locations...<br \/>\nEnabling indexes on hr.locations after data load...<br \/>\nEnabling FK constraints &amp; triggers on hr.regions...<br \/>\nEnabling indexes on hr.regions after data load...<br \/>\nData Load Summary: Total Time (sec): 0.785 Total Rows: 215 Total Size(MB): 0.01<br \/>\n<br \/>\nSchema HR imported successfully.<br \/>\nMigration process completed successfully.<br \/>\n<br \/>\nMigration logs have been saved to \/home\/postgres\/.enterprisedb\/migration-toolkit\/logs<br \/>\n<br \/>\n******************** Migration Summary ********************<br \/>\nTables: 7 out of 7<br \/>\n<br \/>\nTotal objects: 7<br \/>\nSuccessful count: 7<br \/>\nFailed count: 0<br \/>\nInvalid count: 0<br \/>\n<br \/>\n*************************************************************<br \/>\npostgres@ppas01:\/u01\/app\/postgres\/product\/10edb\/edbmtk\/bin\/ [PG10edb]<\/code><\/p>\n<p>Quick check :<br \/>\n<code>postgres=# <span style=\"color: orange\">select * from hr.regions;<\/span><br \/>\n region_id |      region_name<br \/>\n-----------+------------------------<br \/>\n         1 | Europe<br \/>\n         2 | Americas<br \/>\n         3 | Asia<br \/>\n         4 | Middle East and Africa<br \/>\n(4 rows)<\/code><\/p>\n<h3>Conclusion<\/h3>\n<p>Easy, isn&#8217;t it ?<br \/>\nOnce again, EnterpriseDB is providing a very practical, user-frendly and quick to handle tool. In my demo the HR schema is pretty simple. The migration of more complexe schema can be more challenging. Currently only migrations from Oracle are available but SQL Server and other legacy databases should be supported in future versions. In the meantime, you must use EDB Migration Tool Kit for that.<\/p>\n<p>That&#8217;s it. Have fun !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>EnterpriseDB is a valuable actor in PostgreSQL&#8217;s world. In addition to provide support, they also deliver very useful tools to manage easily your Postgres environments. Among these we can mention EDB Enterprise Manager, EDB Backup &amp; Recovery Tool, EDB Failover Manager, aso&#8230; With this post I will present one of the last in the family, [&hellip;]<\/p>\n","protected":false},"author":30,"featured_media":11752,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,83],"tags":[1004,1458,713,15,1459,96,570],"type_dbi":[],"class_list":["post-11751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-database-management","category-postgresql","tag-edb","tag-edb-migration-portal","tag-enterprisedb","tag-migration","tag-mtk","tag-oracle","tag-postgres"],"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>From Oracle to Postgres with the EDB Postgres Migration Portal - dbi Blog<\/title>\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\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"From Oracle to Postgres with the EDB Postgres Migration Portal\" \/>\n<meta property=\"og:description\" content=\"EnterpriseDB is a valuable actor in PostgreSQL&#8217;s world. In addition to provide support, they also deliver very useful tools to manage easily your Postgres environments. Among these we can mention EDB Enterprise Manager, EDB Backup &amp; Recovery Tool, EDB Failover Manager, aso&#8230; With this post I will present one of the last in the family, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-08T13:28:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1190\" \/>\n\t<meta property=\"og:image:height\" content=\"478\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jo\u00ebl Cattin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jo\u00ebl Cattin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 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\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\"},\"author\":{\"name\":\"Jo\u00ebl Cattin\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2c774f00321ee734515f0c2f6a96b780\"},\"headline\":\"From Oracle to Postgres with the EDB Postgres Migration Portal\",\"datePublished\":\"2018-10-08T13:28:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\"},\"wordCount\":642,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\",\"keywords\":[\"edb\",\"EDB Migration Portal\",\"enterprisedb\",\"Migration\",\"MTK\",\"Oracle\",\"postgres\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\",\"name\":\"From Oracle to Postgres with the EDB Postgres Migration Portal - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\",\"datePublished\":\"2018-10-08T13:28:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2c774f00321ee734515f0c2f6a96b780\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png\",\"width\":1190,\"height\":478},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"From Oracle to Postgres with the EDB Postgres Migration Portal\"}]},{\"@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\/2c774f00321ee734515f0c2f6a96b780\",\"name\":\"Jo\u00ebl Cattin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g\",\"caption\":\"Jo\u00ebl Cattin\"},\"description\":\"Jo\u00ebl Cattin has more than three years of experience in databases management. He is specialized in Oracle solutions such as Data Guard and RMAN and has a good background knowledge of Oracle Database Appliance (ODA), Real Application Cluster (RAC) and applications development on APEX. Jo\u00ebl Cattin\u2019s experience includes other RDBMS, such as PostgreSQL and MySQL. He is Oracle Database 12c Administrator Certified Professional, EDB Postgres Advanced Server 9.5 Certified Professional, RedHat Certified System Administrator and ITILv3 Foundation for Service Management Certified. Jo\u00ebl Cattin holds a degree from the \u00c9cole Sup\u00e9rieure d\u2019Informatique de Gestion (ESIG) in Del\u00e9mont and a Federal Certificate of Proficiency in Computer Science (Certificat f\u00e9d\u00e9ral de Capacit\u00e9 \u2013 CFC).\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/joel-cattin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"From Oracle to Postgres with the EDB Postgres Migration Portal - dbi Blog","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\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/","og_locale":"en_US","og_type":"article","og_title":"From Oracle to Postgres with the EDB Postgres Migration Portal","og_description":"EnterpriseDB is a valuable actor in PostgreSQL&#8217;s world. In addition to provide support, they also deliver very useful tools to manage easily your Postgres environments. Among these we can mention EDB Enterprise Manager, EDB Backup &amp; Recovery Tool, EDB Failover Manager, aso&#8230; With this post I will present one of the last in the family, [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/","og_site_name":"dbi Blog","article_published_time":"2018-10-08T13:28:26+00:00","og_image":[{"width":1190,"height":478,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png","type":"image\/png"}],"author":"Jo\u00ebl Cattin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jo\u00ebl Cattin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/"},"author":{"name":"Jo\u00ebl Cattin","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2c774f00321ee734515f0c2f6a96b780"},"headline":"From Oracle to Postgres with the EDB Postgres Migration Portal","datePublished":"2018-10-08T13:28:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/"},"wordCount":642,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png","keywords":["edb","EDB Migration Portal","enterprisedb","Migration","MTK","Oracle","postgres"],"articleSection":["Database Administration &amp; Monitoring","Database management","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/","url":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/","name":"From Oracle to Postgres with the EDB Postgres Migration Portal - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png","datePublished":"2018-10-08T13:28:26+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/2c774f00321ee734515f0c2f6a96b780"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/1-3.png","width":1190,"height":478},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/from-oracle-to-postgres-with-the-edb-postgres-migration-portal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"From Oracle to Postgres with the EDB Postgres Migration Portal"}]},{"@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\/2c774f00321ee734515f0c2f6a96b780","name":"Jo\u00ebl Cattin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4271811924694263d4de5a469f8bd4a90b14d3d90e6ad819b9e2e5ac035a2dc?s=96&d=mm&r=g","caption":"Jo\u00ebl Cattin"},"description":"Jo\u00ebl Cattin has more than three years of experience in databases management. He is specialized in Oracle solutions such as Data Guard and RMAN and has a good background knowledge of Oracle Database Appliance (ODA), Real Application Cluster (RAC) and applications development on APEX. Jo\u00ebl Cattin\u2019s experience includes other RDBMS, such as PostgreSQL and MySQL. He is Oracle Database 12c Administrator Certified Professional, EDB Postgres Advanced Server 9.5 Certified Professional, RedHat Certified System Administrator and ITILv3 Foundation for Service Management Certified. Jo\u00ebl Cattin holds a degree from the \u00c9cole Sup\u00e9rieure d\u2019Informatique de Gestion (ESIG) in Del\u00e9mont and a Federal Certificate of Proficiency in Computer Science (Certificat f\u00e9d\u00e9ral de Capacit\u00e9 \u2013 CFC).","url":"https:\/\/www.dbi-services.com\/blog\/author\/joel-cattin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11751","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\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11751"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11751\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11752"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11751"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}