SlideShare a Scribd company logo
Workshop
Oracle to Postgres Migration
Part 1 - migrating the database
2016-05-30 @IDM
Chris Mair
http://www.pgtraining.com
2016-05-30OracletoPostgresMigration-part1
The Workshop
• part 1
• Oracle Database ™
• how an application interacts with an RDBMS
• the ora2pg tool
• part 2
• PostgreSQL features for DBAs and developers
2016-05-30OracletoPostgresMigration-part1
Important Note
• Postgres is an advanced Open Source RDBMS with
roots in the '80s at UC Berkeley. It has been developed
as a comunity project since 1996
• the project's goal is to develop the most advanced
Open Source enterprise-class RDBMS. Notably, its SQL
implementation strongly conforms to the ANSI-SQL:2008
standard
• Postgres has never been, is not, and never will be some
sort of drop-in replacement for Oracle Database ™ - if
you need such a thing, you need to look elsewhere
2016-05-30OracletoPostgresMigration-part1
Getting to know
Oracle Database ™
2016-05-30OracletoPostgresMigration-part1
Get your own Instance
• the two quickest ways I know to get your own
instance running are:
• Oracle Database Express Edition ™ (running on
your own Linux server → "Oracle XE"
• Oracle Database Standard Edition One ™ as a
service on AWS → "Oracle SE"
• other approaches need more investment in time (the
installation takes some care) or money (licensing)
2016-05-30OracletoPostgresMigration-part1
Oracle XE on own Server
• Oracle XE is gratis-ware (read the exact license
terms, though)
• product is limited to using 1 core, 1 GB RAM and
up to 11 GB user data - the machine can (and
should) be larger, however
• you need a (free) OTN account to download it
• I recommend running it on CentOS
• download version 11.2 (~ 300 MB .rpm) here
2016-05-30OracletoPostgresMigration-part1
Oracle SE One on AWS
• many RDBMS can be run as a managed service on Amazon
Web Services (AWS) - among others also Postgres and Oracle
Database ™
• Oracle SE One 11.2 or 12.1 can be run in a very interesting
"license included model": the license cost is included in the AWS
cost and charged by the hour used (depending on machine
size, the extra cost starts at ~ 2 cent / h more than for a free
RDBMS)
• this product is still limited by the SE One license in socket count,
so AWS can offer it only with at most 16 logical cores per
instance, but there is no other (low) limit in RAM or disk size
• see the AWS website for details
2016-05-30OracletoPostgresMigration-part1
Manuals
• Oracle offers two "easy" manuals here for Oracle XE that can
be a starting point:
• 2 Day DBA
• 2 Day Developer's Guide
• depending on you background be prepared to do some
reading...
• generally speaking, being a DBA in the Oracle world can be
challenging - fortunately you don't need the full DBA-foo if
you're just interested in supporting migrations and/or are
using XE or SE as a service
2016-05-30OracletoPostgresMigration-part1
Tools
• Oracles traditional command line tool is called
SQL*Plus, it comes bundled with Oracle XE or
can be downloaded with the so called "instant
client" package (more later)
• the "official" GUI tool is Oracle SQL Developer:
this is a JAVA application that can be
downloaded here (~ 300 MB)
• both are gratis-ware and are available for Linux
(and other OSes too)
2016-05-30OracletoPostgresMigration-part1
Getting to know
Postgres
2016-05-30OracletoPostgresMigration-part1
Get your own Instance 1/2
• Postgres is in the standard repo of all major Linux
distribution, so that's just one of the usual
commands away:
yum install postgresql postgresql-server
apt-get install postgresql-client postgresql
• however, the major Linux distributions often carry
pretty outdated versions (I'm looking at you, Centos
7, carrying version 9.2, that is three major versions
behind the current 9.5) or package the product in
unusual ways (I'm looking at you, Debian)
2016-05-30OracletoPostgresMigration-part1
Get your own Instance 2/2
• I recommend getting more recent releases from the official
download page
• the project maintains its own repositories for all major Linux
distributions, so you can still use yum, apt, etc. to install and
update everything - note that Postgres issues a major version
about once a year and supports it for 5 years
• it is pretty much possible to compile from source too (I even
prefer to do so, although I'm not recommending this to new
users)
• as mentioned, Postgres is also available as a service on AWS
2016-05-30OracletoPostgresMigration-part1
Manuals
• the official (huge) manual is available here for
reading online or downloading as PDF
• many good books are available - please pay
attention to the publication date, you probably
should pick something from 2012 or newer
(covering version 9.1 or newer)
• the second part of this workshop will deal with
Postgres, attending it is a very good way to
getting started :)
2016-05-30OracletoPostgresMigration-part1
Tools
• Postgres' traditional command line tool is called
psql - again, this can be installed from your Linux
distribution's repo or from the Postgres repo
• there is no "official" GUI tool, though!
• some people use pgAdmin (Open Source), some
people use propretiary multi-product tools, some
people just use psql
• I recommend sticking with psql
2016-05-30OracletoPostgresMigration-part1
Hands-on Setup
2016-05-30OracletoPostgresMigration-part1
Talking with a RDBMS 1/3
• when using a RDBMS you don't deal with files, but rather use a
client or client application that comunicates with the RDBMS
over a network socket
• each product has its own native networking protocol
• Oracle uses the proprietary "TNS" protocol with the default TCP
port 1521 and the OCI library as native call interface
• Postgres uses its own "frontend/backend" protocol with the
default TCP port 5432 and the libpq library as native call
interface
• these two sets of protocols / libraries have nothing whatsoever in
common
2016-05-30OracletoPostgresMigration-part1
Talking with a RDBMS 2/3
• the structured query language (SQL) is used to "instruct"
a RDBMS
• it is used to define the database schema (DDL
statements), to manipulate the data (DML statements)
and to query the data
• information about the database schema is stored as
data in the "catalog", so SQL can be used to query the
catalog too
• there is an ANSI SQL standard that covers many, but not
all aspects
2016-05-30OracletoPostgresMigration-part1
Talking with a RDBMS 3/3
• fortunately most applications written for Oracle
Database ™ don't use TNS/OCI natively but send
SQL statements over a higher level API such as
ODBC (Win/C++), JDBC (Java), the .NET data
provider API (C#), etc.
• drivers for these APIs are (of course) available for
Postgres too
• hence, ideally, migrating an application that talks
SQL over - say - JDBC is not too hard ... ideally...
2016-05-30OracletoPostgresMigration-part1
Example App
• a super simple web app written in Java: it
displays the countries from the "hr"-sample
database
2016-05-30OracletoPostgresMigration-part1
Example App - Code
JDBCdriverandconnectioninfo
SQL
JDBC-APIcalls
2016-05-30OracletoPostgresMigration-part1
Can this run on Postgres?
• yes! we need to:
• create the schema (table countries) in
Postgres
• copy over the data
• change the JDBC driver and connection info
• let's do that (manually exporting the table, using
SQL Developer)...
2016-05-30OracletoPostgresMigration-part1
With some work...
• the app was easy:
• the data too, but the
schema was not (data
types are not really
portable: varchar2 vs
varchar, case
sensitivity of quoted
identifiers, ...)
2016-05-30OracletoPostgresMigration-part1
We need a Tool!
• ora2pg by Gilles Darold comes to the rescue
• ora2og connects to Oracle and dumps schema and
data in a Postgres-compatible format; it is highly
configurable and can even connect to Postgres and
migrate everything on the fly
• ora2pg reads Oracle's catalog and knows how to create
the equivalent Postgres objects (tables, views,
sequences, indexes), with unique, primary, foreign key
and check constraints without syntactic pitfalls
• let's install ora2pg on our third machine ("migration")
2016-05-30OracletoPostgresMigration-part1
Installing ora2pg 1/4
• we need to install the Oracle instant client rpms
from here - get these three files:
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm
• and set the environment:
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH
export PATH=/usr/lib/oracle/12.1/client64/bin:$PATH
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
• let's try connecting to the Oracle server:
sqlplus hr/hr@oracle-xe.pgtraining.com ✓
2016-05-30OracletoPostgresMigration-part1
Installing ora2pg 2/4
• analogously, we want to install the Postgres
client:
yum install postgresql
• and test it by connecting to the Postgres server:
psql -h postgres.pgtraining.com -U hr hr
(note all these machines are firewalled, you do not
want to leave ports 1521 and 5432 open to the world,
especially not with such silly passwords)
✓
2016-05-30OracletoPostgresMigration-part1
Installing ora2pg 3/4
• then we need to install a few Perl modules,
among which is DBD::Oracle - as it's not
distributed by Red Hat, we need to download it
from CPAN and build it:
yum install perl-DBI perl-DBD-Pg perl-ExtUtils-MakeMaker gcc
wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-
Oracle-1.74.tar.gz
tar xf DBD-Oracle-1.74.tar.gz
cd DBD-Oracle-1.74
perl Makefile.PL -l # watch out for missing Perl modules
make
make install
2016-05-30OracletoPostgresMigration-part1
Installing ora2pg 4/4
• finally we can install ora2pg:
wget https://github.com/darold/ora2pg/archive/v17.4.tar.gz
tar xf v17.4.tar.gz
cd ora2pg-17.4
perl Makefile.PL # watch out for missing Perl modules
make
make install
• and verify that it is installed:
/usr/local/bin/ora2pg -v ✓
2016-05-30OracletoPostgresMigration-part1
Configuration
• a template configuration file is installed in
/etc/ora2pg/ora2pg.conf.dist
• there are way to many parameters to list here,
see the ora2pg documentation...
ORACLE_HOME /usr/lib/oracle/12.1/client64
ORACLE_DSN dbi:Oracle:host=oracle-xe.pgtraining.com;sid=xe
ORACLE_USER hr
ORACLE_PWD hr
USER_GRANTS 1
SCHEMA hr
TYPE TABLE,VIEW,PROCEDURE,TRIGGER
DROP_FKEY 1
2016-05-30OracletoPostgresMigration-part1
Run 1
• ora2pg-schema-to-file.conf → dump schema to output.sql
/usr/local/bin/ora2pg -c ora2pg-schema-to-file.conf
[========================>] 7/7 tables (100.0%) end of scanning.
[========================>] 7/7 tables (100.0%) end of table export.
[========================>] 1/1 views (100.0%) end of output.
[========================>] 2/2 procedures (100.0%) end of output.
[========================>] 1/1 triggers (100.0%) end of output.
psql -h postgres.pgtraining.com -U hr hr
Password for user hr:
psql (9.2.15, server 9.5.3)
WARNING: psql version 9.2, server version 9.5.
Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.
hr=> i output.sql
2016-05-30OracletoPostgresMigration-part1
Run 2
• ora2pg-all-to-file.conf → dump schema and data to output.sql
/usr/local/bin/ora2pg -c ora2pg-all-to-file.conf
[========================>] 7/7 tables (100.0%) end of scanning.
[========================>] 7/7 tables (100.0%) end of table export.
[========================>] 1/1 views (100.0%) end of output.
[========================>] 2/2 procedures (100.0%) end of output.
[========================>] 1/1 triggers (100.0%) end of output.
[========================>] 25/25 rows (100.0%) Table COUNTRIES (25 recs/sec)
[========================>] 27/27 rows (100.0%) Table DEPARTMENTS (27 recs/sec)
[========================>] 107/107 rows (100.0%) Table EMPLOYEES (107 recs/sec)
[========================>] 19/19 rows (100.0%) Table JOBS (19 recs/sec)
[========================>] 10/10 rows (100.0%) Table JOB_HISTORY (10 recs/sec)
[========================>] 23/23 rows (100.0%) Table LOCATIONS (23 recs/sec)
[========================>] 4/4 rows (100.0%) Table REGIONS (4 recs/sec)
[========================>] 215/215 rows (100.0%) on total
estimated data (1 sec., avg: 215 recs/sec)
psql -h postgres.pgtraining.com -U hr hr
Password for user hr:
psql (9.2.15, server 9.5.3)
[...]
hr=> i output.sql
2016-05-30OracletoPostgresMigration-part1
Post-Migration Testing...
hr=> select * from job_history;
employee_id | start_date | end_date | job_id | department_id
-------------+---------------------+---------------------+------------+---------------
102 | 2001-01-13 00:00:00 | 2006-07-24 00:00:00 | IT_PROG | 60
[...]
200 | 2002-07-01 00:00:00 | 2006-12-31 00:00:00 | AC_ACCOUNT | 90
(10 rows)
hr=> update employees set job_id = 'ST_MAN' where employee_id = 100;
UPDATE 1
hr=> select * from job_history;
employee_id | start_date | end_date | job_id | department_id
-------------+---------------------+--------------------------+------------+---------------
102 | 2001-01-13 00:00:00 | 2006-07-24 00:00:00 | IT_PROG | 60
[...]
200 | 2002-07-01 00:00:00 | 2006-12-31 00:00:00 | AC_ACCOUNT | 90
100 | 2003-06-17 00:00:00 | 2016-05-30 03:38:32.7629 | AD_PRES | 90
(11 rows)
2016-05-30OracletoPostgresMigration-part1
PL/SQL vs PL/PgSQL
• ora2pg can automatically translate only very simple
procedures or functions (as the trigger examples in the hr
demo schema)
• more complicated procedures need to be translated
manually
• fortunately, PL/PgSQL is easy and rich in features: in my
experience typical procedures can be rewritten without too
much hassle most of the times
• some people suggest getting rid of procedures alltogether
when migrating (move them to the middle tier) - I tend to find it
easier to just translate them!
2016-05-30OracletoPostgresMigration-part1
Scenario 1: Bad
• application is linked against OCI / uses TNS
natively (like the SQL*Plus executable)
• if the source code is not available, a migration is
not possible
• if the source code is available and can be
changed, at the very least the database access
layer needs to be rewritten from scratch (using
libpq)
2016-05-30OracletoPostgresMigration-part1
Scenario 2: Bad
• application uses some proprietary software or
component such as Oracle Forms ™
• an easy migration is generally not possible
2016-05-30OracletoPostgresMigration-part1
Scenario 3: so-so
• application uses ODBC, JDBC, etc. - however, it uses
lots of queries with Oracle custom-syntax (such as (+)
instead of outer joins, mixes quoted and unquoted
identifiers, uses lots of Oracle specific functions etc.)
and has long and complex PL/SQL procedures
• if the source code is not available, a migration is not
possible
• if the source code is available, and can be changed,
queries and procedures need to be translated
manually
2016-05-30OracletoPostgresMigration-part1
Scenario 4: good
• application uses ODBC, JDBC, etc. - also, it
either uses no or very few Oracle custom-syntax
and PL/SQL procedures or the vendor has made
a version for Postgres backends available
• application that use abstractions layers such as
ORM-wrappers usually fall into this category
• a migration is normally not too hard (unless the
software is completely locked-down and does not
even allow to select the ODBC, JDBC, etc. driver)
2016-05-30OracletoPostgresMigration-part1
What is you scenario?
2016-05-30OracletoPostgresMigration-part1
'k thx bye ;)

More Related Content

What's hot (20)

Presentation upgrade, migrate & consolidate to oracle database 12c &amp...
Presentation   upgrade, migrate & consolidate to oracle database 12c &amp...Presentation   upgrade, migrate & consolidate to oracle database 12c &amp...
Presentation upgrade, migrate & consolidate to oracle database 12c &amp...
solarisyougood
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
Sandesh Rao
 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL servers
Simon J Mudd
 
Migrating from Oracle to Postgres
Migrating from Oracle to PostgresMigrating from Oracle to Postgres
Migrating from Oracle to Postgres
EDB
 
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Sandesh Rao
 
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Carlos Sierra
 
How to Migrate from Oracle to EDB Postgres
How to Migrate from Oracle to EDB PostgresHow to Migrate from Oracle to EDB Postgres
How to Migrate from Oracle to EDB Postgres
Ashnikbiz
 
The Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - PresentationThe Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - Presentation
Markus Michalewicz
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
Command Prompt., Inc
 
Understanding my database through SQL*Plus using the free tool eDB360
Understanding my database through SQL*Plus using the free tool eDB360Understanding my database through SQL*Plus using the free tool eDB360
Understanding my database through SQL*Plus using the free tool eDB360
Carlos Sierra
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
J V
 
SQL Tuning 101
SQL Tuning 101SQL Tuning 101
SQL Tuning 101
Carlos Sierra
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL
PostgreSQL-Consulting
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
shivankuniversity
 
Standard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & HowStandard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & How
Markus Michalewicz
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning Fundamentals
Enkitec
 
Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera ClusterPlanning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
Codership Oy - Creators of Galera Cluster
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
Reuven Lerner
 
Understanding oracle rac internals part 1 - slides
Understanding oracle rac internals   part 1 - slidesUnderstanding oracle rac internals   part 1 - slides
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
NeoClova
 
Presentation upgrade, migrate & consolidate to oracle database 12c &amp...
Presentation   upgrade, migrate & consolidate to oracle database 12c &amp...Presentation   upgrade, migrate & consolidate to oracle database 12c &amp...
Presentation upgrade, migrate & consolidate to oracle database 12c &amp...
solarisyougood
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
Sandesh Rao
 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL servers
Simon J Mudd
 
Migrating from Oracle to Postgres
Migrating from Oracle to PostgresMigrating from Oracle to Postgres
Migrating from Oracle to Postgres
EDB
 
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Sandesh Rao
 
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Survey of some free Tools to enhance your SQL Tuning and Performance Diagnost...
Carlos Sierra
 
How to Migrate from Oracle to EDB Postgres
How to Migrate from Oracle to EDB PostgresHow to Migrate from Oracle to EDB Postgres
How to Migrate from Oracle to EDB Postgres
Ashnikbiz
 
The Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - PresentationThe Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - Presentation
Markus Michalewicz
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
Command Prompt., Inc
 
Understanding my database through SQL*Plus using the free tool eDB360
Understanding my database through SQL*Plus using the free tool eDB360Understanding my database through SQL*Plus using the free tool eDB360
Understanding my database through SQL*Plus using the free tool eDB360
Carlos Sierra
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
J V
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL10 things, an Oracle DBA should care about when moving to PostgreSQL
10 things, an Oracle DBA should care about when moving to PostgreSQL
PostgreSQL-Consulting
 
Standard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & HowStandard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & How
Markus Michalewicz
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning Fundamentals
Enkitec
 
Understanding oracle rac internals part 1 - slides
Understanding oracle rac internals   part 1 - slidesUnderstanding oracle rac internals   part 1 - slides
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
NeoClova
 

Viewers also liked (20)

Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Gabriele Bartolini
 
Key Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to PostgresKey Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to Postgres
EDB
 
Product Update: EDB Postgres Platform 2017
Product Update: EDB Postgres Platform 2017Product Update: EDB Postgres Platform 2017
Product Update: EDB Postgres Platform 2017
EDB
 
PostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA'sPostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA's
Gerger
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
PgTraining
 
PGADMIN, Aplicaciones
PGADMIN, AplicacionesPGADMIN, Aplicaciones
PGADMIN, Aplicaciones
IsabelAlisson
 
Shaping Optimizer's Search Space
Shaping Optimizer's Search SpaceShaping Optimizer's Search Space
Shaping Optimizer's Search Space
Gerger
 
Overview of cloud computing
Overview of cloud computingOverview of cloud computing
Overview of cloud computing
Tarek Nader
 
Reducing Database Pain & Costs with Postgres
Reducing Database Pain & Costs with PostgresReducing Database Pain & Costs with Postgres
Reducing Database Pain & Costs with Postgres
EDB
 
Reducing the Risks of Migrating Off Oracle
Reducing the Risks of Migrating Off OracleReducing the Risks of Migrating Off Oracle
Reducing the Risks of Migrating Off Oracle
EDB
 
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnikbiz
 
Why use PostgreSQL?
Why use PostgreSQL?Why use PostgreSQL?
Why use PostgreSQL?
Gabriele Bartolini
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
 
DBaaS with EDB Postgres on AWS
DBaaS with EDB Postgres on AWSDBaaS with EDB Postgres on AWS
DBaaS with EDB Postgres on AWS
EDB
 
Optimizing Your Postgres ROI Through Best Practices
Optimizing Your Postgres ROI Through Best PracticesOptimizing Your Postgres ROI Through Best Practices
Optimizing Your Postgres ROI Through Best Practices
EDB
 
EDB Postgres DBA Best Practices
EDB Postgres DBA Best PracticesEDB Postgres DBA Best Practices
EDB Postgres DBA Best Practices
EDB
 
5 Postgres DBA Tips
5 Postgres DBA Tips5 Postgres DBA Tips
5 Postgres DBA Tips
EDB
 
Google In China - Case Study
Google In China - Case StudyGoogle In China - Case Study
Google In China - Case Study
Maria Gizelle Aragon
 
Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!
PGConf APAC
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
 
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Gabriele Bartolini
 
Key Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to PostgresKey Methodologies for Migrating from Oracle to Postgres
Key Methodologies for Migrating from Oracle to Postgres
EDB
 
Product Update: EDB Postgres Platform 2017
Product Update: EDB Postgres Platform 2017Product Update: EDB Postgres Platform 2017
Product Update: EDB Postgres Platform 2017
EDB
 
PostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA'sPostgreSQL for Oracle Developers and DBA's
PostgreSQL for Oracle Developers and DBA's
Gerger
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
PgTraining
 
PGADMIN, Aplicaciones
PGADMIN, AplicacionesPGADMIN, Aplicaciones
PGADMIN, Aplicaciones
IsabelAlisson
 
Shaping Optimizer's Search Space
Shaping Optimizer's Search SpaceShaping Optimizer's Search Space
Shaping Optimizer's Search Space
Gerger
 
Overview of cloud computing
Overview of cloud computingOverview of cloud computing
Overview of cloud computing
Tarek Nader
 
Reducing Database Pain & Costs with Postgres
Reducing Database Pain & Costs with PostgresReducing Database Pain & Costs with Postgres
Reducing Database Pain & Costs with Postgres
EDB
 
Reducing the Risks of Migrating Off Oracle
Reducing the Risks of Migrating Off OracleReducing the Risks of Migrating Off Oracle
Reducing the Risks of Migrating Off Oracle
EDB
 
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle
Ashnikbiz
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
 
DBaaS with EDB Postgres on AWS
DBaaS with EDB Postgres on AWSDBaaS with EDB Postgres on AWS
DBaaS with EDB Postgres on AWS
EDB
 
Optimizing Your Postgres ROI Through Best Practices
Optimizing Your Postgres ROI Through Best PracticesOptimizing Your Postgres ROI Through Best Practices
Optimizing Your Postgres ROI Through Best Practices
EDB
 
EDB Postgres DBA Best Practices
EDB Postgres DBA Best PracticesEDB Postgres DBA Best Practices
EDB Postgres DBA Best Practices
EDB
 
5 Postgres DBA Tips
5 Postgres DBA Tips5 Postgres DBA Tips
5 Postgres DBA Tips
EDB
 
Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!
PGConf APAC
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
 
Ad

Similar to Oracle to Postgres Migration - part 1 (20)

Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQLEin Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
EDB
 
An Expert Guide to Migrating Legacy Databases to PostgreSQL
An Expert Guide to Migrating Legacy Databases to PostgreSQLAn Expert Guide to Migrating Legacy Databases to PostgreSQL
An Expert Guide to Migrating Legacy Databases to PostgreSQL
EDB
 
Expert Guide to Migrating Legacy Databases to Postgres
Expert Guide to Migrating Legacy Databases to PostgresExpert Guide to Migrating Legacy Databases to Postgres
Expert Guide to Migrating Legacy Databases to Postgres
EDB
 
Szabaduljon ki az Oracle szorításából
Szabaduljon ki az Oracle szorításábólSzabaduljon ki az Oracle szorításából
Szabaduljon ki az Oracle szorításából
EDB
 
Un guide complet pour la migration de bases de données héritées vers PostgreSQL
Un guide complet pour la migration de bases de données héritées vers PostgreSQLUn guide complet pour la migration de bases de données héritées vers PostgreSQL
Un guide complet pour la migration de bases de données héritées vers PostgreSQL
EDB
 
EPAS + Cloud = Oracle Compatible Postgres in Minutes
EPAS + Cloud = Oracle Compatible Postgres in MinutesEPAS + Cloud = Oracle Compatible Postgres in Minutes
EPAS + Cloud = Oracle Compatible Postgres in Minutes
EDB
 
Oracle Migration to Postgres in the Cloud
Oracle Migration to Postgres in the CloudOracle Migration to Postgres in the Cloud
Oracle Migration to Postgres in the Cloud
EDB
 
EDB & ELOS Technologies - Break Free from Oracle
EDB & ELOS Technologies - Break Free from OracleEDB & ELOS Technologies - Break Free from Oracle
EDB & ELOS Technologies - Break Free from Oracle
EDB
 
Break Free from Oracle
Break Free from OracleBreak Free from Oracle
Break Free from Oracle
EDB
 
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to PostgresEDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB
 
How to migrate from Oracle to EDB Postgres
How to migrate from Oracle to EDB PostgresHow to migrate from Oracle to EDB Postgres
How to migrate from Oracle to EDB Postgres
Ashnikbiz
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
EDB
 
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
PGConf APAC
 
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
Trivadis
 
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database ServicePostgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
EDB
 
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico CaldaraTrivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis
 
PUGS Meetup Presentation - 11062015
PUGS Meetup Presentation - 11062015PUGS Meetup Presentation - 11062015
PUGS Meetup Presentation - 11062015
Wei Shan Ang
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
 
Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube
EDB
 
The Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle DatabasesThe Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle Databases
EDB
 
Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQLEin Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
Ein Expertenleitfaden für die Migration von Legacy-Datenbanken zu PostgreSQL
EDB
 
An Expert Guide to Migrating Legacy Databases to PostgreSQL
An Expert Guide to Migrating Legacy Databases to PostgreSQLAn Expert Guide to Migrating Legacy Databases to PostgreSQL
An Expert Guide to Migrating Legacy Databases to PostgreSQL
EDB
 
Expert Guide to Migrating Legacy Databases to Postgres
Expert Guide to Migrating Legacy Databases to PostgresExpert Guide to Migrating Legacy Databases to Postgres
Expert Guide to Migrating Legacy Databases to Postgres
EDB
 
Szabaduljon ki az Oracle szorításából
Szabaduljon ki az Oracle szorításábólSzabaduljon ki az Oracle szorításából
Szabaduljon ki az Oracle szorításából
EDB
 
Un guide complet pour la migration de bases de données héritées vers PostgreSQL
Un guide complet pour la migration de bases de données héritées vers PostgreSQLUn guide complet pour la migration de bases de données héritées vers PostgreSQL
Un guide complet pour la migration de bases de données héritées vers PostgreSQL
EDB
 
EPAS + Cloud = Oracle Compatible Postgres in Minutes
EPAS + Cloud = Oracle Compatible Postgres in MinutesEPAS + Cloud = Oracle Compatible Postgres in Minutes
EPAS + Cloud = Oracle Compatible Postgres in Minutes
EDB
 
Oracle Migration to Postgres in the Cloud
Oracle Migration to Postgres in the CloudOracle Migration to Postgres in the Cloud
Oracle Migration to Postgres in the Cloud
EDB
 
EDB & ELOS Technologies - Break Free from Oracle
EDB & ELOS Technologies - Break Free from OracleEDB & ELOS Technologies - Break Free from Oracle
EDB & ELOS Technologies - Break Free from Oracle
EDB
 
Break Free from Oracle
Break Free from OracleBreak Free from Oracle
Break Free from Oracle
EDB
 
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to PostgresEDB's Migration Portal - Migrate from Oracle to Postgres
EDB's Migration Portal - Migrate from Oracle to Postgres
EDB
 
How to migrate from Oracle to EDB Postgres
How to migrate from Oracle to EDB PostgresHow to migrate from Oracle to EDB Postgres
How to migrate from Oracle to EDB Postgres
Ashnikbiz
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
EDB
 
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
PGConf APAC
 
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
TechEvent 2019: Oracle to PostgreSQL - a Travel Guide from Practice; Roland S...
Trivadis
 
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database ServicePostgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
EDB
 
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico CaldaraTrivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis TechEvent 2017 PostgreSQL für die (Orakel) DBA by Ludovico Caldara
Trivadis
 
PUGS Meetup Presentation - 11062015
PUGS Meetup Presentation - 11062015PUGS Meetup Presentation - 11062015
PUGS Meetup Presentation - 11062015
Wei Shan Ang
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
 
Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube Migre sus bases de datos Oracle a la nube
Migre sus bases de datos Oracle a la nube
EDB
 
The Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle DatabasesThe Real Scoop on Migrating from Oracle Databases
The Real Scoop on Migrating from Oracle Databases
EDB
 
Ad

More from PgTraining (7)

Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
PgTraining
 
Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
PgTraining
 
Weminar 12.03.2021 . JIT
Weminar 12.03.2021 . JITWeminar 12.03.2021 . JIT
Weminar 12.03.2021 . JIT
PgTraining
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
PgTraining
 
Pgtraining bdr
Pgtraining bdrPgtraining bdr
Pgtraining bdr
PgTraining
 
Messa in rete
Messa in reteMessa in rete
Messa in rete
PgTraining
 
Apcamp
ApcampApcamp
Apcamp
PgTraining
 
Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
PgTraining
 
Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
PgTraining
 
Weminar 12.03.2021 . JIT
Weminar 12.03.2021 . JITWeminar 12.03.2021 . JIT
Weminar 12.03.2021 . JIT
PgTraining
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
PgTraining
 
Pgtraining bdr
Pgtraining bdrPgtraining bdr
Pgtraining bdr
PgTraining
 

Recently uploaded (20)

Ch01_Introduction_to_Information_Securit
Ch01_Introduction_to_Information_SecuritCh01_Introduction_to_Information_Securit
Ch01_Introduction_to_Information_Securit
KawukiDerrick
 
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays
 
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays
 
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays
 
THE FRIEDMAN TEST ( Biostatics B. Pharm)
THE FRIEDMAN TEST ( Biostatics B. Pharm)THE FRIEDMAN TEST ( Biostatics B. Pharm)
THE FRIEDMAN TEST ( Biostatics B. Pharm)
JishuHaldar
 
SAP_S4HANA_EWM_Food_Processing_Industry.pptx
SAP_S4HANA_EWM_Food_Processing_Industry.pptxSAP_S4HANA_EWM_Food_Processing_Industry.pptx
SAP_S4HANA_EWM_Food_Processing_Industry.pptx
vemulavenu484
 
Retort Instrumentation laboratory practi
Retort Instrumentation laboratory practiRetort Instrumentation laboratory practi
Retort Instrumentation laboratory practi
ADINDADYAHMUKHLASIN
 
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays
 
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays
 
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays
 
Hypothesis Testing Training Material.pdf
Hypothesis Testing Training Material.pdfHypothesis Testing Training Material.pdf
Hypothesis Testing Training Material.pdf
AbdirahmanAli51
 
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays
 
1-2. Lab Introduction to Linux environment.ppt
1-2. Lab Introduction to Linux environment.ppt1-2. Lab Introduction to Linux environment.ppt
1-2. Lab Introduction to Linux environment.ppt
Wahajch
 
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays
 
Part Departement Head Presentation for Business
Part Departement Head Presentation for BusinessPart Departement Head Presentation for Business
Part Departement Head Presentation for Business
Rizki229625
 
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays
 
METHODS OF DATA COLLECTION (Research methodology)
METHODS OF DATA COLLECTION (Research methodology)METHODS OF DATA COLLECTION (Research methodology)
METHODS OF DATA COLLECTION (Research methodology)
anwesha248
 
Mining Presentation Online Courses for Student
Mining Presentation Online Courses for StudentMining Presentation Online Courses for Student
Mining Presentation Online Courses for Student
Rizki229625
 
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
Eddie Lee
 
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays
 
Ch01_Introduction_to_Information_Securit
Ch01_Introduction_to_Information_SecuritCh01_Introduction_to_Information_Securit
Ch01_Introduction_to_Information_Securit
KawukiDerrick
 
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays New York 2025 - Building Scalable AI Systems by Sai Prasad Veluru (Ap...
apidays
 
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays New York 2025 - Breaking Barriers: Lessons Learned from API Integrati...
apidays
 
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays New York 2025 - Beyond Webhooks: The Future of Scalable API Event Del...
apidays
 
THE FRIEDMAN TEST ( Biostatics B. Pharm)
THE FRIEDMAN TEST ( Biostatics B. Pharm)THE FRIEDMAN TEST ( Biostatics B. Pharm)
THE FRIEDMAN TEST ( Biostatics B. Pharm)
JishuHaldar
 
SAP_S4HANA_EWM_Food_Processing_Industry.pptx
SAP_S4HANA_EWM_Food_Processing_Industry.pptxSAP_S4HANA_EWM_Food_Processing_Industry.pptx
SAP_S4HANA_EWM_Food_Processing_Industry.pptx
vemulavenu484
 
Retort Instrumentation laboratory practi
Retort Instrumentation laboratory practiRetort Instrumentation laboratory practi
Retort Instrumentation laboratory practi
ADINDADYAHMUKHLASIN
 
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays New York 2025 - The FINOS Common Domain Model for Capital Markets by ...
apidays
 
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays New York 2025 - Fast, Repeatable, Secure: Pick 3 with FINOS CCC by Le...
apidays
 
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays New York 2025 - Spring Modulith Design for Microservices by Renjith R...
apidays
 
Hypothesis Testing Training Material.pdf
Hypothesis Testing Training Material.pdfHypothesis Testing Training Material.pdf
Hypothesis Testing Training Material.pdf
AbdirahmanAli51
 
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays Singapore 2025 - What exactly are AI Agents by Aki Ranin (Earthshots ...
apidays
 
1-2. Lab Introduction to Linux environment.ppt
1-2. Lab Introduction to Linux environment.ppt1-2. Lab Introduction to Linux environment.ppt
1-2. Lab Introduction to Linux environment.ppt
Wahajch
 
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays New York 2025 - The Challenge is Not the Pattern, But the Best Integr...
apidays
 
Part Departement Head Presentation for Business
Part Departement Head Presentation for BusinessPart Departement Head Presentation for Business
Part Departement Head Presentation for Business
Rizki229625
 
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays New York 2025 - Building Green Software by Marissa Jasso & Katya Drey...
apidays
 
METHODS OF DATA COLLECTION (Research methodology)
METHODS OF DATA COLLECTION (Research methodology)METHODS OF DATA COLLECTION (Research methodology)
METHODS OF DATA COLLECTION (Research methodology)
anwesha248
 
Mining Presentation Online Courses for Student
Mining Presentation Online Courses for StudentMining Presentation Online Courses for Student
Mining Presentation Online Courses for Student
Rizki229625
 
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
[Eddie Lee] Capstone Project - AI PM Bootcamp - DataFox.pdf
Eddie Lee
 
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays New York 2025 - Life is But a (Data) Stream by Sandon Jacobs (Confluent)
apidays
 

Oracle to Postgres Migration - part 1

  • 1. Workshop Oracle to Postgres Migration Part 1 - migrating the database 2016-05-30 @IDM Chris Mair http://www.pgtraining.com
  • 2. 2016-05-30OracletoPostgresMigration-part1 The Workshop • part 1 • Oracle Database ™ • how an application interacts with an RDBMS • the ora2pg tool • part 2 • PostgreSQL features for DBAs and developers
  • 3. 2016-05-30OracletoPostgresMigration-part1 Important Note • Postgres is an advanced Open Source RDBMS with roots in the '80s at UC Berkeley. It has been developed as a comunity project since 1996 • the project's goal is to develop the most advanced Open Source enterprise-class RDBMS. Notably, its SQL implementation strongly conforms to the ANSI-SQL:2008 standard • Postgres has never been, is not, and never will be some sort of drop-in replacement for Oracle Database ™ - if you need such a thing, you need to look elsewhere
  • 5. 2016-05-30OracletoPostgresMigration-part1 Get your own Instance • the two quickest ways I know to get your own instance running are: • Oracle Database Express Edition ™ (running on your own Linux server → "Oracle XE" • Oracle Database Standard Edition One ™ as a service on AWS → "Oracle SE" • other approaches need more investment in time (the installation takes some care) or money (licensing)
  • 6. 2016-05-30OracletoPostgresMigration-part1 Oracle XE on own Server • Oracle XE is gratis-ware (read the exact license terms, though) • product is limited to using 1 core, 1 GB RAM and up to 11 GB user data - the machine can (and should) be larger, however • you need a (free) OTN account to download it • I recommend running it on CentOS • download version 11.2 (~ 300 MB .rpm) here
  • 7. 2016-05-30OracletoPostgresMigration-part1 Oracle SE One on AWS • many RDBMS can be run as a managed service on Amazon Web Services (AWS) - among others also Postgres and Oracle Database ™ • Oracle SE One 11.2 or 12.1 can be run in a very interesting "license included model": the license cost is included in the AWS cost and charged by the hour used (depending on machine size, the extra cost starts at ~ 2 cent / h more than for a free RDBMS) • this product is still limited by the SE One license in socket count, so AWS can offer it only with at most 16 logical cores per instance, but there is no other (low) limit in RAM or disk size • see the AWS website for details
  • 8. 2016-05-30OracletoPostgresMigration-part1 Manuals • Oracle offers two "easy" manuals here for Oracle XE that can be a starting point: • 2 Day DBA • 2 Day Developer's Guide • depending on you background be prepared to do some reading... • generally speaking, being a DBA in the Oracle world can be challenging - fortunately you don't need the full DBA-foo if you're just interested in supporting migrations and/or are using XE or SE as a service
  • 9. 2016-05-30OracletoPostgresMigration-part1 Tools • Oracles traditional command line tool is called SQL*Plus, it comes bundled with Oracle XE or can be downloaded with the so called "instant client" package (more later) • the "official" GUI tool is Oracle SQL Developer: this is a JAVA application that can be downloaded here (~ 300 MB) • both are gratis-ware and are available for Linux (and other OSes too)
  • 11. 2016-05-30OracletoPostgresMigration-part1 Get your own Instance 1/2 • Postgres is in the standard repo of all major Linux distribution, so that's just one of the usual commands away: yum install postgresql postgresql-server apt-get install postgresql-client postgresql • however, the major Linux distributions often carry pretty outdated versions (I'm looking at you, Centos 7, carrying version 9.2, that is three major versions behind the current 9.5) or package the product in unusual ways (I'm looking at you, Debian)
  • 12. 2016-05-30OracletoPostgresMigration-part1 Get your own Instance 2/2 • I recommend getting more recent releases from the official download page • the project maintains its own repositories for all major Linux distributions, so you can still use yum, apt, etc. to install and update everything - note that Postgres issues a major version about once a year and supports it for 5 years • it is pretty much possible to compile from source too (I even prefer to do so, although I'm not recommending this to new users) • as mentioned, Postgres is also available as a service on AWS
  • 13. 2016-05-30OracletoPostgresMigration-part1 Manuals • the official (huge) manual is available here for reading online or downloading as PDF • many good books are available - please pay attention to the publication date, you probably should pick something from 2012 or newer (covering version 9.1 or newer) • the second part of this workshop will deal with Postgres, attending it is a very good way to getting started :)
  • 14. 2016-05-30OracletoPostgresMigration-part1 Tools • Postgres' traditional command line tool is called psql - again, this can be installed from your Linux distribution's repo or from the Postgres repo • there is no "official" GUI tool, though! • some people use pgAdmin (Open Source), some people use propretiary multi-product tools, some people just use psql • I recommend sticking with psql
  • 16. 2016-05-30OracletoPostgresMigration-part1 Talking with a RDBMS 1/3 • when using a RDBMS you don't deal with files, but rather use a client or client application that comunicates with the RDBMS over a network socket • each product has its own native networking protocol • Oracle uses the proprietary "TNS" protocol with the default TCP port 1521 and the OCI library as native call interface • Postgres uses its own "frontend/backend" protocol with the default TCP port 5432 and the libpq library as native call interface • these two sets of protocols / libraries have nothing whatsoever in common
  • 17. 2016-05-30OracletoPostgresMigration-part1 Talking with a RDBMS 2/3 • the structured query language (SQL) is used to "instruct" a RDBMS • it is used to define the database schema (DDL statements), to manipulate the data (DML statements) and to query the data • information about the database schema is stored as data in the "catalog", so SQL can be used to query the catalog too • there is an ANSI SQL standard that covers many, but not all aspects
  • 18. 2016-05-30OracletoPostgresMigration-part1 Talking with a RDBMS 3/3 • fortunately most applications written for Oracle Database ™ don't use TNS/OCI natively but send SQL statements over a higher level API such as ODBC (Win/C++), JDBC (Java), the .NET data provider API (C#), etc. • drivers for these APIs are (of course) available for Postgres too • hence, ideally, migrating an application that talks SQL over - say - JDBC is not too hard ... ideally...
  • 19. 2016-05-30OracletoPostgresMigration-part1 Example App • a super simple web app written in Java: it displays the countries from the "hr"-sample database
  • 20. 2016-05-30OracletoPostgresMigration-part1 Example App - Code JDBCdriverandconnectioninfo SQL JDBC-APIcalls
  • 21. 2016-05-30OracletoPostgresMigration-part1 Can this run on Postgres? • yes! we need to: • create the schema (table countries) in Postgres • copy over the data • change the JDBC driver and connection info • let's do that (manually exporting the table, using SQL Developer)...
  • 22. 2016-05-30OracletoPostgresMigration-part1 With some work... • the app was easy: • the data too, but the schema was not (data types are not really portable: varchar2 vs varchar, case sensitivity of quoted identifiers, ...)
  • 23. 2016-05-30OracletoPostgresMigration-part1 We need a Tool! • ora2pg by Gilles Darold comes to the rescue • ora2og connects to Oracle and dumps schema and data in a Postgres-compatible format; it is highly configurable and can even connect to Postgres and migrate everything on the fly • ora2pg reads Oracle's catalog and knows how to create the equivalent Postgres objects (tables, views, sequences, indexes), with unique, primary, foreign key and check constraints without syntactic pitfalls • let's install ora2pg on our third machine ("migration")
  • 24. 2016-05-30OracletoPostgresMigration-part1 Installing ora2pg 1/4 • we need to install the Oracle instant client rpms from here - get these three files: oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm • and set the environment: export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH export PATH=/usr/lib/oracle/12.1/client64/bin:$PATH export ORACLE_HOME=/usr/lib/oracle/12.1/client64 • let's try connecting to the Oracle server: sqlplus hr/[email protected]
  • 25. 2016-05-30OracletoPostgresMigration-part1 Installing ora2pg 2/4 • analogously, we want to install the Postgres client: yum install postgresql • and test it by connecting to the Postgres server: psql -h postgres.pgtraining.com -U hr hr (note all these machines are firewalled, you do not want to leave ports 1521 and 5432 open to the world, especially not with such silly passwords) ✓
  • 26. 2016-05-30OracletoPostgresMigration-part1 Installing ora2pg 3/4 • then we need to install a few Perl modules, among which is DBD::Oracle - as it's not distributed by Red Hat, we need to download it from CPAN and build it: yum install perl-DBI perl-DBD-Pg perl-ExtUtils-MakeMaker gcc wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD- Oracle-1.74.tar.gz tar xf DBD-Oracle-1.74.tar.gz cd DBD-Oracle-1.74 perl Makefile.PL -l # watch out for missing Perl modules make make install
  • 27. 2016-05-30OracletoPostgresMigration-part1 Installing ora2pg 4/4 • finally we can install ora2pg: wget https://github.com/darold/ora2pg/archive/v17.4.tar.gz tar xf v17.4.tar.gz cd ora2pg-17.4 perl Makefile.PL # watch out for missing Perl modules make make install • and verify that it is installed: /usr/local/bin/ora2pg -v ✓
  • 28. 2016-05-30OracletoPostgresMigration-part1 Configuration • a template configuration file is installed in /etc/ora2pg/ora2pg.conf.dist • there are way to many parameters to list here, see the ora2pg documentation... ORACLE_HOME /usr/lib/oracle/12.1/client64 ORACLE_DSN dbi:Oracle:host=oracle-xe.pgtraining.com;sid=xe ORACLE_USER hr ORACLE_PWD hr USER_GRANTS 1 SCHEMA hr TYPE TABLE,VIEW,PROCEDURE,TRIGGER DROP_FKEY 1
  • 29. 2016-05-30OracletoPostgresMigration-part1 Run 1 • ora2pg-schema-to-file.conf → dump schema to output.sql /usr/local/bin/ora2pg -c ora2pg-schema-to-file.conf [========================>] 7/7 tables (100.0%) end of scanning. [========================>] 7/7 tables (100.0%) end of table export. [========================>] 1/1 views (100.0%) end of output. [========================>] 2/2 procedures (100.0%) end of output. [========================>] 1/1 triggers (100.0%) end of output. psql -h postgres.pgtraining.com -U hr hr Password for user hr: psql (9.2.15, server 9.5.3) WARNING: psql version 9.2, server version 9.5. Some psql features might not work. SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256) Type "help" for help. hr=> i output.sql
  • 30. 2016-05-30OracletoPostgresMigration-part1 Run 2 • ora2pg-all-to-file.conf → dump schema and data to output.sql /usr/local/bin/ora2pg -c ora2pg-all-to-file.conf [========================>] 7/7 tables (100.0%) end of scanning. [========================>] 7/7 tables (100.0%) end of table export. [========================>] 1/1 views (100.0%) end of output. [========================>] 2/2 procedures (100.0%) end of output. [========================>] 1/1 triggers (100.0%) end of output. [========================>] 25/25 rows (100.0%) Table COUNTRIES (25 recs/sec) [========================>] 27/27 rows (100.0%) Table DEPARTMENTS (27 recs/sec) [========================>] 107/107 rows (100.0%) Table EMPLOYEES (107 recs/sec) [========================>] 19/19 rows (100.0%) Table JOBS (19 recs/sec) [========================>] 10/10 rows (100.0%) Table JOB_HISTORY (10 recs/sec) [========================>] 23/23 rows (100.0%) Table LOCATIONS (23 recs/sec) [========================>] 4/4 rows (100.0%) Table REGIONS (4 recs/sec) [========================>] 215/215 rows (100.0%) on total estimated data (1 sec., avg: 215 recs/sec) psql -h postgres.pgtraining.com -U hr hr Password for user hr: psql (9.2.15, server 9.5.3) [...] hr=> i output.sql
  • 31. 2016-05-30OracletoPostgresMigration-part1 Post-Migration Testing... hr=> select * from job_history; employee_id | start_date | end_date | job_id | department_id -------------+---------------------+---------------------+------------+--------------- 102 | 2001-01-13 00:00:00 | 2006-07-24 00:00:00 | IT_PROG | 60 [...] 200 | 2002-07-01 00:00:00 | 2006-12-31 00:00:00 | AC_ACCOUNT | 90 (10 rows) hr=> update employees set job_id = 'ST_MAN' where employee_id = 100; UPDATE 1 hr=> select * from job_history; employee_id | start_date | end_date | job_id | department_id -------------+---------------------+--------------------------+------------+--------------- 102 | 2001-01-13 00:00:00 | 2006-07-24 00:00:00 | IT_PROG | 60 [...] 200 | 2002-07-01 00:00:00 | 2006-12-31 00:00:00 | AC_ACCOUNT | 90 100 | 2003-06-17 00:00:00 | 2016-05-30 03:38:32.7629 | AD_PRES | 90 (11 rows)
  • 32. 2016-05-30OracletoPostgresMigration-part1 PL/SQL vs PL/PgSQL • ora2pg can automatically translate only very simple procedures or functions (as the trigger examples in the hr demo schema) • more complicated procedures need to be translated manually • fortunately, PL/PgSQL is easy and rich in features: in my experience typical procedures can be rewritten without too much hassle most of the times • some people suggest getting rid of procedures alltogether when migrating (move them to the middle tier) - I tend to find it easier to just translate them!
  • 33. 2016-05-30OracletoPostgresMigration-part1 Scenario 1: Bad • application is linked against OCI / uses TNS natively (like the SQL*Plus executable) • if the source code is not available, a migration is not possible • if the source code is available and can be changed, at the very least the database access layer needs to be rewritten from scratch (using libpq)
  • 34. 2016-05-30OracletoPostgresMigration-part1 Scenario 2: Bad • application uses some proprietary software or component such as Oracle Forms ™ • an easy migration is generally not possible
  • 35. 2016-05-30OracletoPostgresMigration-part1 Scenario 3: so-so • application uses ODBC, JDBC, etc. - however, it uses lots of queries with Oracle custom-syntax (such as (+) instead of outer joins, mixes quoted and unquoted identifiers, uses lots of Oracle specific functions etc.) and has long and complex PL/SQL procedures • if the source code is not available, a migration is not possible • if the source code is available, and can be changed, queries and procedures need to be translated manually
  • 36. 2016-05-30OracletoPostgresMigration-part1 Scenario 4: good • application uses ODBC, JDBC, etc. - also, it either uses no or very few Oracle custom-syntax and PL/SQL procedures or the vendor has made a version for Postgres backends available • application that use abstractions layers such as ORM-wrappers usually fall into this category • a migration is normally not too hard (unless the software is completely locked-down and does not even allow to select the ODBC, JDBC, etc. driver)