3. Agenda
Pense bem antes de começar!
Comparativo
Ferramentas para migração
Cases
Referências
4. Antes de começar!
“Think Different” = Pense Diferente – Apple
“Yes, We Can” = “Sim, nós podemos” – Barack Obama
Pensando diferente, sim, nós podemos migrar do Oracle para
PostgreSQL – Leonardo M. Martins
5. Pense bem antes de começar!
Custos
Dificuldade
Tempo
Diferença entre camadas e os softwares
Suporte
6. E continue pensando...
Diferenças na sintaxe e funcionalidade
Backup
Testes
Codificação de caracteres e Localização
Diferença de Ocupação
7. E não podemos esquecer...
Documentar, Registrar
Do simples para Complexo
Scripts em texto puro
Importe e migre uma coisa de cada vez
Logs durante todo o processo
Siga em frente somente se der certo, senão, volte
aos passos anteriores!
8. Comparativo
Preço
Oracle – Enterprise Edition = US$ 47.500,00 – Por proc./Usuários ilimitados
Oracle – Standard Edition = US$ 17.500,00 – Usuários ilimitados
Oracle – Standard Edition = US$ 350,00 – Usuário nomeado (5 min.) = US$ 1.750,00
EnterpriseDB – Advanced Server = US$ 1.795,00 – 3 meses de suporte – 1 usuário
PostgreSQL - Free
9. Comparativo
O que EnterpriseDB?
O EnterpriseDB, versão proprietária do PostgreSQL, como CentOS e RedHat.
Tem uma camada de compatibilidade com o Oracle que supostamente faz com que
as aplicações clientes não precisem ser modificadas. Eles também tem um aplicativo
que migra o seu banco Oracle para do EnterpriseDB.
Podemos baixar a versão de demonstração deles, usar a ferramenta de migração, e
da lá fazer um pg_dump do banco para usar em PostgreSQL.
Ou você pode decidir que vale a pena, comprar uma licença Advanced Server, com
suporte, etc & tal. Não é barato como vimos, quando comparamos com os valores do
Oracle, fica bem interessante!
10. Comparativo
No Oracle os catálogos SYS e SYSTEM equivalem ao pg_catalog e
information_schema no PostgreSQL.
Não existe a tabela DUAL no PostgreSQL, mas durante migrações é
comum a sua criação para manter compatibilidade.
DBLink, criptografia, cube, XML, dentre outras funções avançadas
não são nativas, mas podem ser implantadas, e possuem grande diferença
da versão fornecida no Oracle.
Materialized views não existem no PostgreSQL, mas podem ser
implementadas.
11. Comparativo – PL/SQL x PL/pgSQL
O PostgreSQL possuem diversas extensões para outras linguagens, além de Java e C.
Fato, no PostgreSQL não existem procedures, tão pouco packages.
Asfunctions não aceitam parâmetros com valores DEFAULT, mas assim como o Java
podemos utilizar sobrecarga de método.
Cursores não são usados no PostgreSQL.
O corpo das functions são delimitadas por $ no PostgreSQL.
As triggers no PostgreSQL chamam UMA function.
Não é possível colocar COMMIT dentro de uma function.
12. Comparativo – Armazenamento
Datafile no PostgreSQL = pasta que é gerenciada pelo
SGBD.
O conceito de extensões e segmentos ainda não foi
implementado no PostgreSQL.
Não é possível armazenar as áreas temporárias, em outros
locais. Ficam no mesmo local do catálogo do sistema.
13. Comparativo – Backup
O Redo no Oracle é semelhante ao WAL no
PostgreSQL.
Conceito de DUMP, cópia de arquivos de dados,
Stand By é semelhante em ambos.
O PostgreSQL não possui ferramentas como
FlashBack, RMAN, nativas, existem projetos
alternativos.
14. Comparativo – Segurança
GRANT e REVOKE são semelhante.
SCHEMAS, ao criar deve-se definir o dono no PostgreSQL. Depois é
igual entre os dois.
ROLE “connect” é definida no pg_hba.conf no PostgreSQL. (GROUPs)
ROLE “resource” no Oracle seria o privilégio para criar objetos num
esquema do PostgreSQL.
Role DBA é no Oracle é ser superusuário do PostgreSQL.
Role SYS é no Oracle é ser o usuário POSTGRES no PostgreSQL.
15. Comparativo – Cluster
Um cluster do PostgreSQL é parecido com a primeira versão
feita para Oracle.
O PgCluster é parecido ao RAC, e existem outros projetos
que tem a mesma idéia.
Não existe um "Oracle Dataguard", mas esta em
desenvolvimento, previsto para a versão 8.4
16. Ferramentas para migração
Ora2Pg, modulo escrito em Perl para exportar um schema
Oracle para um schema PostgreSQL compatível.
Orafce, modulo escrito em C, que implementa diversas
funções Oracle no PostgreSQL.
Pg::snapshot, modulo escrito em Pl/Perl, que possibilita a
criação de Materialized Views and Materialized View Logs,
tanto no Oracle quanto no PostgreSQL
17. Cases
Yahoo – Base de 2 Penta!!!
http://www.computerworld.com/s/article/9087918/
Size_matters_Yahoo_claims_2_petabyte_database_is_world_s_biggest_busiest
Embrapa
http://www.infoteca.cnptia.embrapa.br/handle/CNPTIA/11982
Detran-CE
http://softwarelivre.ceara.gov.br/noticias/detran-migra-banco-de-dados-para-software-livre
http://www2.seplag.ce.gov.br/premio2008/projetos_filtro_detalhes_2008.asp?cdProjeto=121
OpenBravo ERP
http://wiki.openbravo.com/wiki/ERP/2.50/Oracle_to_PostgreSQL_migration
18. Referências
Oracle http://www.oracle.com/
EnterpriseDB http://www.enterprisedb.com/
PostgreSQL http://www.postgresql.org/
Ora2Pg http://pgfoundry.org/projects/ora2pg/
Orafce http://pgfoundry.org/projects/orafce/
Pg::Snapshot http://pgfoundry.org/projects/snapshot/
PgCluster http://pgfoundry.org/projects/pgcluster/
Projetos http://pgfoundry.org/
História de horror de Migração para PostgreSQL
http://www.frankhilliard.com/horrorstory.cfm
Migração
http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#Oracle