advertisement

Migrando de Oracle para PostgreSQL

50 %
50 %
advertisement
Information about Migrando de Oracle para PostgreSQL
Technology

Published on March 4, 2009

Author: fernandoike

Source: slideshare.net

advertisement

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. ●  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. ●

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.

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. ●

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 ●

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.

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.

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.

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. ●

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

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 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. ●

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).

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 

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>

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

FullCopyConvert: Convertendo/Migrando de Postgres para MySQL

Este vídeo tutorial irá demonstrar como converter os dados de Postgres para MySQL. ETL Postgres para MySQL
Read more

FullCopyConvert: Convertendo/Migrando de Postgres para ...

Este Vídeo tutorial irá demonstrar como converter/migrar de Postgres para Firebird. ETL Postgres para Firebird
Read more

migrar base Oracle a PostgreSQL - PostgreSQL: The world's ...

He encontrado esta herramienta ora2pg para migrar una base de datos Oracle a ... migrar base Oracle a PostgreSQL: Previous: From: Fernando Siguenza: ...
Read more

Migrando a Postgres Plus - ArPug - PostgreSQL Argentina ...

Migrando a Postgres Plus ... • EnterpriseDB es el soporte Nivel 3 de Sun para PostgreSQL ... – Existen 46 vistas estilo Oracle para administrar la ...
Read more

Migrando de Oracle a Postgres | www.postgresql.org.es

Migrando de Oracle a Postgres. ... migraciones de Oracle, de EnterpriseDB, para iluminar el ... de preguntas sobre cómo migrar de Oracle a Postgres.
Read more