Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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,366 views

Published on

Published in: Technology
  • Be the first to comment

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>

×