SlideShare a Scribd company logo
1 of 17
Download to read offline
Migração de Oracle para
PostgreSQL - Indo além do
SGBD
Este trabalho está licenciado com uma Licença
Creative Commons - Atribuição-NãoComercial 4.0 Internacional.
Cenário
● Sistema Jurídico Web – (Aproximadamente
100 mil clientes)
● Base de dados - Oracle 11g RAC 2 nós
(Aproximadamente 1 TB de dados)
● Sistema auxiliares e satélites já utilizando
PostgreSQL
(Necessidade de comunicação entre bases
– Realizado via aplicação - php)
Principais Motivos
● Custo de licenciamento
● Integração entre sistemas internos
ineficiente (Bases distintas)
● Gargalos de performance (Modelagem)
Desafios da Migração
● Janela para execução mínima
Projeto – Abril – Dez 2014
Migração – Janela de Final de Dezembro < 48H
● Reescrita de SQL (Nenhum framework, SQL direto
no código fonte - PHP e ASP)
● Comportamento da aplicação e demais
integrações deveriam ser transparentes
● Alguns sistemas não tinham mais o código fonte
(.NET)
● Problemas graves de modelagem
Ambiente
● DBA não participava do desenho e construção
● Aplicações sem documentação e controle e
versão
● Modelagem desenvolvida no decorrer da
codificação pelo próprio desenvolvedor
● Receio de utilizar soluções implementadas no
banco de dados
● Retrabalho
Ferramenta escolhida
ora2pg – Ferramenta livre que simplifica o
processo de migração, desenvolvido desde
2001 por Gilles Darold.
http://ora2pg.darold.net/
Motivos da escolha:
● Quantidade de schemas (owner) e tabelas
para migrar
● Desempenho (Multiprocessamento)
● Migração de diversos objetos de forma
transparente (Views, Procedures,
Functions, Packages, Sequences, Triggers
entre outros)
● Possibilidade de realizar ajustes durante a
migração (Alteração de nomes de campos,
tipos de dados, reordenar posicionamento
entre outros)
Problemas na migração
● Tipos Number sem definição de tamanho
(Numeric/Bigint/Integer)
● Tabelas sem PK mas com UK
● Tabelas sem PK, UK e/ou relacionamento,
mas que tinham um campo “Codigo” como
sendo o primeiro (Esquecimento do
Dev/DBA ?)
● Dados duplicados (Tabela Cidade: Cod 1 =
Viamão e POA)
Estratégia – Projeto
● Extração de estrutura do Oracle e
importação no PostgreSQL (Mapeamento
de erros encontrados – PL_Ajusta)
● Liberação do banco de teste para a equipe
realizar as mudanças no SQL (Início de
uma mudança na cultura da empresa,
orientação para escrita correta de SQL,GIT,
Redmine)
● Testes de cargas e métricas de tempo e
CPU (Até então via output do ora2pg)
Novos problemas
● Migração via arquivo de saída do ora2gp
ficou inviável
● Tempo de ajuste dos dados após a
migração (Vacuum, Analyze, criação de
índice)
● Janela comprometida, alto risco caso o
processo falhasse em algum ponto
Estratégia de guerra
● Migração direta para o PostgreSQL através
do ora2pg
● Criação de um conjunto scripts que
monitorava a migração
● Cada schema importado com sucesso
dispara os seus respectivos ajustes
(Criação de índice, constraints etc)
● Redução de janela de tempo e possibilidade
de agir em caso de falha.
Resumo da Migração
● 1 TB de dados (600 GB somente do
sistema jurídico)
● 2186 tabelas
● 23 schemas (owners)
● 54 funções (PL/pgSQL)
● 41 triggers
● 13 horas e 48 minutos !
Cenário após migração!
● PostgreSQL atende todos os sistemas,
ambiente atual conta com replicação nativa
e pgBouncer como pool de conexões
● Nenhum problema de performance
● Integrações com outros sistemas via FDW
● Utilização de novas funções como o uso de
JSON para realização de auditoria e
pesquisa em formulários dinâmicos
Indo além do SGBD?
● Menor distância entre DBA e DEV
● Perda do “medo” do banco
● Novas funcionalidades não precisam de
novas licenças
● “Isso você resolve fora do banco” por “Isso
você pode resolver no banco”
● “Dá pra fazer isso no Postgres?!”
Demonstração de Migração
Oracle XE para PostgreSQL
https://youtu.be/-DF5FT__OKw
Perguntas?
Muito Obrigado!
Fabiano Machado Dias
fabiano@wolaksistemas.com.br

More Related Content

Viewers also liked

Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLFabrízio Mello
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 Fabrízio Mello
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015Fabrízio Mello
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Fabio Telles Rodriguez
 
Planejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLPlanejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLFabrízio Mello
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)Fabrízio Mello
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBADextra
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónPGDay Campinas
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanCaio Oliveira
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Diogo L. V. G. Rubert
 
EXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLEXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLFabrízio Mello
 
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...PGDay Campinas
 

Viewers also liked (19)

Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQL
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013
 
Planejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLPlanejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQL
 
Pgday campinas 2015
Pgday campinas 2015Pgday campinas 2015
Pgday campinas 2015
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlib
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia Replicación
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o Barman
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
EXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQLEXPLicando o Explain no PostgreSQL
EXPLicando o Explain no PostgreSQL
 
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
CASE: O PostgreSQL em BI: Milhares de operações diárias consolidadas em "near...
 

Migração de Oracle para PostgreSQL - Indo além do SGBD

  • 1. Migração de Oracle para PostgreSQL - Indo além do SGBD Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial 4.0 Internacional.
  • 2. Cenário ● Sistema Jurídico Web – (Aproximadamente 100 mil clientes) ● Base de dados - Oracle 11g RAC 2 nós (Aproximadamente 1 TB de dados) ● Sistema auxiliares e satélites já utilizando PostgreSQL (Necessidade de comunicação entre bases – Realizado via aplicação - php)
  • 3. Principais Motivos ● Custo de licenciamento ● Integração entre sistemas internos ineficiente (Bases distintas) ● Gargalos de performance (Modelagem)
  • 4. Desafios da Migração ● Janela para execução mínima Projeto – Abril – Dez 2014 Migração – Janela de Final de Dezembro < 48H ● Reescrita de SQL (Nenhum framework, SQL direto no código fonte - PHP e ASP) ● Comportamento da aplicação e demais integrações deveriam ser transparentes ● Alguns sistemas não tinham mais o código fonte (.NET) ● Problemas graves de modelagem
  • 5. Ambiente ● DBA não participava do desenho e construção ● Aplicações sem documentação e controle e versão ● Modelagem desenvolvida no decorrer da codificação pelo próprio desenvolvedor ● Receio de utilizar soluções implementadas no banco de dados ● Retrabalho
  • 6. Ferramenta escolhida ora2pg – Ferramenta livre que simplifica o processo de migração, desenvolvido desde 2001 por Gilles Darold. http://ora2pg.darold.net/
  • 7. Motivos da escolha: ● Quantidade de schemas (owner) e tabelas para migrar ● Desempenho (Multiprocessamento) ● Migração de diversos objetos de forma transparente (Views, Procedures, Functions, Packages, Sequences, Triggers entre outros) ● Possibilidade de realizar ajustes durante a migração (Alteração de nomes de campos, tipos de dados, reordenar posicionamento entre outros)
  • 8. Problemas na migração ● Tipos Number sem definição de tamanho (Numeric/Bigint/Integer) ● Tabelas sem PK mas com UK ● Tabelas sem PK, UK e/ou relacionamento, mas que tinham um campo “Codigo” como sendo o primeiro (Esquecimento do Dev/DBA ?) ● Dados duplicados (Tabela Cidade: Cod 1 = Viamão e POA)
  • 9. Estratégia – Projeto ● Extração de estrutura do Oracle e importação no PostgreSQL (Mapeamento de erros encontrados – PL_Ajusta) ● Liberação do banco de teste para a equipe realizar as mudanças no SQL (Início de uma mudança na cultura da empresa, orientação para escrita correta de SQL,GIT, Redmine) ● Testes de cargas e métricas de tempo e CPU (Até então via output do ora2pg)
  • 10. Novos problemas ● Migração via arquivo de saída do ora2gp ficou inviável ● Tempo de ajuste dos dados após a migração (Vacuum, Analyze, criação de índice) ● Janela comprometida, alto risco caso o processo falhasse em algum ponto
  • 11. Estratégia de guerra ● Migração direta para o PostgreSQL através do ora2pg ● Criação de um conjunto scripts que monitorava a migração ● Cada schema importado com sucesso dispara os seus respectivos ajustes (Criação de índice, constraints etc) ● Redução de janela de tempo e possibilidade de agir em caso de falha.
  • 12. Resumo da Migração ● 1 TB de dados (600 GB somente do sistema jurídico) ● 2186 tabelas ● 23 schemas (owners) ● 54 funções (PL/pgSQL) ● 41 triggers ● 13 horas e 48 minutos !
  • 13. Cenário após migração! ● PostgreSQL atende todos os sistemas, ambiente atual conta com replicação nativa e pgBouncer como pool de conexões ● Nenhum problema de performance ● Integrações com outros sistemas via FDW ● Utilização de novas funções como o uso de JSON para realização de auditoria e pesquisa em formulários dinâmicos
  • 14. Indo além do SGBD? ● Menor distância entre DBA e DEV ● Perda do “medo” do banco ● Novas funcionalidades não precisam de novas licenças ● “Isso você resolve fora do banco” por “Isso você pode resolver no banco” ● “Dá pra fazer isso no Postgres?!”
  • 15. Demonstração de Migração Oracle XE para PostgreSQL https://youtu.be/-DF5FT__OKw
  • 17. Muito Obrigado! Fabiano Machado Dias fabiano@wolaksistemas.com.br