Fábio Telles
– Chefe de Desenvolvimento - DTI (Prefeitura
Diadema)

Fernando Ike
- Assistente do DTI (Prefeitura Diadema)
Boas práticas



   Evitar utilizar extenções específicas de um SGBD.
●


   Utilizar ao máximo a sintaxe padrão ANSI SQL....
Antes de migrar


   Leia atentamente toda a documentação dos SGBDs e identifique 
●


diferenças na sintaxe e funcionalid...
Durante a migração

   Registre todo o processo. 
●


   Migre primeiros sistemas não críticos.
●


   Migre primeiro o qu...
Oracle != PostgreSQL
Tipos de dados
  VARCHAR2           > VARCHAR
●


 NUMBER              > NUMERIC

JOIN
   FROM t1, t2...
SQL

  Catálogo de sistema SYS e SYSTEM  do Oracle são equivalentes ao 
●


pg_catalog e information_schema no PostgreSQL....
PL/SQL X PLpg/SQL
   Ambos possuem PL/Java, funções em C dentro do banco. No 
●


PostgreSQL há outras linguagens como PL/...
Storage

   O conceito de Espaço de Tabelas no PostgreSQL se refere a uma pasta que 
●


é gerenciada pelo SGBD. Não é pos...
Backup


   Conceito de Redo no Oracle é semelhante ao conceito de WAL no 
●


PostgreSQL.
   Conceito de DUMP é semelhant...
Segurança

  GRANT e REVOKE tem funcionalidade semelhante.
●


  SCHEMAS não são automaticamente atrelados ao usuário no P...
Lógica da Migração - Ora2pg
Ora2pg
   Feito em PERL. Depende dos módulos DBI, DBD::Pg e DBD::Oracle.
●


   Importa dados e definições do Oracle para ...
DBI-Link


­ Pl/Perl Untrusted.
­ DBI/DBD.
­  Mapeamento  de  tabelas  remotas  utilizando  Views  +  Rules  + 
Triggers.
...
Referências



Oracle ­ http://www.oracle.com
PostgreSQL ­ http://www.postgresql.org
TechDocs (Migração) ­ http://www.post...
Contatos

Fábio Telles
<fabio.telles@diadema.sp.gov.br>
<fabio.telles@gmail.com>

Fernando Ike
<fernando.ike@diadema.sp.go...
Migrando de Oracle para PostgreSQL
Upcoming SlideShare
Loading in …5
×

Migrando de Oracle para PostgreSQL

2,034 views
1,955 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,034
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Migrando de Oracle para PostgreSQL

  1. 1. Fábio Telles – Chefe de Desenvolvimento - DTI (Prefeitura Diadema) Fernando Ike - Assistente do DTI (Prefeitura Diadema)
  2. 2. Boas práticas  Evitar utilizar extenções específicas de um SGBD. ●  Utilizar ao máximo a sintaxe padrão ANSI SQL. ●  Evite o uso de mixed case (notação Húngara), use minúsculas para  ● nomes de objetos e maiúsculas para palavras reservadas.  Documentar rigorosamente todo o código armazenado no banco. ●  Utilizar tipos de dados binários somente quando necessário. ●
  3. 3. Antes de migrar  Leia atentamente toda a documentação dos SGBDs e identifique  ● diferenças na sintaxe e funcionalidades utilizadas.  Realizar Backup antes de realizar qualquer teste. ●  Realizar testes em um servidor de teste. ●  Verificar codificação de caracteres e localização. ●  Verificar espaço em disco disponível, o espaço ocupado pelo banco  ● pode variar de SGBD para SGBD.
  4. 4. Durante a migração  Registre todo o processo.  ●  Migre primeiros sistemas não críticos. ●  Migre primeiro o que é mais simples como tabelas e índices. ●  Se possível,  gere scripts em texto puro com todo DDL e DML. ●  Importe tabelas, dados e constraints separadamente. ●  Habilitar e checar logs durante exportações e importações. ●  Migre primeiro o que é mais simples como tabelas e índices. ●  Homologue cada etapa antes de prosseguir. ●
  5. 5. Oracle != PostgreSQL Tipos de dados  VARCHAR2  > VARCHAR ●  NUMBER > NUMERIC JOIN  FROM t1, t2 > FROM t1 LEFT OUTER JOIN t2 ●       WHERE t1.id = t2.id(+)             ON t1.id = t2.id Funções:  DECODE (sexo, 'M',  > CASE WHEN sexo = 'M' then 'Masculino' ●       'Masculino,'F','Feminino')        WHEN sexo = 'F' then 'Feminino' END NVL > COALESCE ●  sysdate, systimestamp > current_date, current_timestamp ● UNION  MINUS > EXCEPT ● Clausula LIMIT e OFSET:  ROWNUM, ROWID > LIMIT, OFSET, OID ●
  6. 6. SQL  Catálogo de sistema SYS e SYSTEM  do Oracle são equivalentes ao  ● pg_catalog e information_schema no PostgreSQL.  PostgreSQL é Sensitive Case. Todos nomes de objetos com letras  ● maiúsculas devem estar entre aspas.  O PostgreSQL não necessita do uso da tabela “DUAL”. Pode ser  ● criada uma para manter a compatibilidade.  Implementação de hierarquia entre tabelas, XML, Database Link e  ● outras funções avançadas possuem diferenças.  O PostgreSQL não possui  visões materializadas. No entanto é  ● possível contornar este problema com gatilhos e funções.
  7. 7. PL/SQL X PLpg/SQL  Ambos possuem PL/Java, funções em C dentro do banco. No  ● PostgreSQL há outras linguagens como PL/Perl, PL/Pyhton, etc.  Não existem procedures no PostgreSQL, no entanto uma função pode  ● ser utilizada retornando o tipo VOID.  Não existem valores DEFAULT para parâmetos recebidos no  ● PL/SQL, no entanto é possível utilizar sobrecarga de funções.  Não existem Packages no PostgreSQL, no entanto os objetos podem  ● ser organizados num esquema separado. Variáveis de nível de pacote  podem ser armazenadas em tabelas temporárias mantidas durante a  sessão.  Cursores não são necessários no PostgreSQL. A consulta deve ser  ● declarada junto a cláusula FOR do laço.  O corpo da função deve estar delimitado com marcas de dólar no  ● PostgreSQL  Os gatilhos no PostgreSQL chamam uma e apenas uma função, não  ● havendo código em seu corpo.
  8. 8. Storage  O conceito de Espaço de Tabelas no PostgreSQL se refere a uma pasta que  ● é gerenciada pelo SGBD. Não é possível definir DataFiles específicos. A  única influência sobre os DataFiles é especificar o formato de  armazenamento nas colunas com valores grandes.  O PostgreSQL não tem implementado explicitamente o conceito de  ● extensões e segmentos.  Ainda não é possível especificar o local de armazenamento separado para  ● áreas temporárias (para operações de Rollback, Ordenação, Indexação, etc).  Estas áreas ficam todas no mesmo local que o catálogo do sistema.
  9. 9. Backup  Conceito de Redo no Oracle é semelhante ao conceito de WAL no  ● PostgreSQL.  Conceito de DUMP é semelhante em ambos. ●  DUMP no PostgreSQL permite redirecionamento via pipe.  ●  Conceito de cópia de arquivos de dados é semelhante em ambos. ●  Conceito de Stand By é semelhante em ambos. ●  O PostgreSQL não possui uma ferramenta de FlashBack. ●  O PostgreSQL não possui ferramenta nativa no estilo do RMAN. ●
  10. 10. Segurança  GRANT e REVOKE tem funcionalidade semelhante. ●  SCHEMAS não são automaticamente atrelados ao usuário no PostgreSQL.  ● Eles precisam ser criados manualmente. Depois disso se comporta de maneira  parecida. No entanto um esquema pode possuir objetos de outro dono se ele  tiver as permissões necessárias para isso.  O ROLE “connect” no Oracle é realizado através do pg_hba.conf no  ● PostgreSQL.  O ROLE “resource” no Oracle é semelhante a possuir privilégio para criar  ● objetos num esquema do PostgreSQL.  O Role DBA é no Oracle é semelhante ao superusuário do PostgreSQL. ●  O Role SYS é no Oracle é semelhante ao usuário POSTGRES no  ● PostgreSQL. * Os GROUPs foram convertidos  para ROLEs  na versão 8.1
  11. 11. Lógica da Migração - Ora2pg
  12. 12. Ora2pg  Feito em PERL. Depende dos módulos DBI, DBD::Pg e DBD::Oracle. ●  Importa dados e definições do Oracle para um arquivo texto ou direto  ● para um banco no PostgreSQL.  Suporte a extração de DDL de tabelas, indices, constraints, views,  ● triggers, procedures, functions, packages e grants.  Dados podem ser exportados no formato INSERT ou COPY. ●  Pode ser selecionado um esquema ou tabela específico para ser  ● importado.   Corrige nomes de tipos de dados diferentes. ●  Extrai o código do corpo de triggers numa função. ●  Algumas funções com nome diferente precisam. ●  Funções em PL/SQL geralmente precisam de um pouco de edição  ● manual.  Funções SQL diferentes precisam de edição manual. ●
  13. 13. DBI-Link ­ Pl/Perl Untrusted. ­ DBI/DBD. ­  Mapeamento  de  tabelas  remotas  utilizando  Views  +  Rules  +  Triggers. ­  Acesso  Transparente  a  tabelas  de  Banco  de  Dados  Remotos  (Oracle, MSSQL, MySQL).
  14. 14. Referências Oracle ­ http://www.oracle.com PostgreSQL ­ http://www.postgresql.org TechDocs (Migração) ­ http://www.postgresql.org/docs/techdocs.3  Ora2Pg ­ http://www.samse.fr/GPL/ora2pg/ora2pg.html  DBI­Link ­ http://pgfoundry.org/projects/dbi­link/  História de horror de Migração para PostgreSQL ­  http://www.frankhilliard.com/horrorstory.cfm 
  15. 15. Contatos Fábio Telles <fabio.telles@diadema.sp.gov.br> <fabio.telles@gmail.com> Fernando Ike <fernando.ike@diadema.sp.gov.br> <fernando.ike@gmail.com>

×