Migração de Oracle para PostgreSQL - FISL

download Migração de Oracle para PostgreSQL - FISL

If you can't read please download the document

description

Palestra realizada no FISL em 2006 sobre migração de Oracle para PostgreSQL

Transcript of Migração de Oracle para PostgreSQL - FISL

  • 1. Fbio TellesChefe de Desenvolvimento - DTI (Prefeitura Diadema) Fernando Ike - Assistente do DTI (Prefeitura Diadema)

2. Boas prticas

  • Evitar utilizar extenes especficas de um SGBD.
  • Utilizar ao mximo a sintaxe padro ANSI SQL.
  • Evite o uso de mixed case (notao Hngara), use minsculas para nomes de objetos e maisculas para palavras reservadas.
  • Documentar rigorosamente todo o cdigo armazenado no banco.
  • Utilizar tipos de dados binrios somente quando necessrio.

3. Antes de migrar

  • Leia atentamente toda a documentao dos SGBDs e identifique diferenas na sintaxe e funcionalidades utilizadas.
  • Realizar Backup antes de realizar qualquer teste.
  • Realizar testes em um servidor de teste.
  • Verificar codificao de caracteres e localizao.
  • Verificar espao em disco disponvel, o espao ocupado pelo banco pode variar de SGBD para SGBD.

4.

  • Registre todo o processo.
  • Migre primeiros sistemas no crticos.
  • Migre primeiro o que mais simples como tabelas e ndices.
  • Se possvel,gere scripts em texto puro com todo DDL e DML.
  • Importe tabelas, dados e constraints separadamente.
  • Habilitar e checar logs durante exportaes e importaes.
  • Migre primeiro o que mais simples como tabelas e ndices.
  • Homologue cada etapa antes de prosseguir.

Durante a migrao 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
  • Funes:
  • 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. SQL

  • Catlogo de sistema SYS e SYSTEMdo Oracle so equivalentes ao pg_catalog e information_schema no PostgreSQL.
  • PostgreSQL S ensitive Case . Todos nomes de objetos com letras maisculas devem estar entre aspas.
  • O PostgreSQL no necessita do uso da tabela DUAL. Pode ser criada uma para manter a compatibilidade.
  • Implementao de hierarquia entre tabelas, XML, Database Link e outras funes avanadas possuem diferenas.
  • O PostgreSQL no possuivises materializadas. No entanto possvel contornar este problema com gatilhos e funes.

7. PL/SQL X PLpg/SQL

  • Ambos possuem PL/Java, funes em C dentro do banco. No PostgreSQL h outras linguagens como PL/Perl, PL/Pyhton, etc.
  • No existem procedures no PostgreSQL, no entanto uma funo pode ser utilizada retornando o tipo VOID.
  • No existem valores DEFAULT para parmetos recebidos no PL/SQL, no entanto possvel utilizar sobrecarga de funes.
  • No existemPackagesno PostgreSQL, no entanto os objetos podem ser organizados num esquema separado. Variveis de nvel de pacote podem ser armazenadas em tabelas temporrias mantidas durante a sesso.
  • Cursoresno so necessrios no PostgreSQL. A consulta deve ser declarada junto a clusula FOR do lao.
  • O corpo da funo deve estar delimitado com marcas de dlar no PostgreSQL
  • Os gatilhos no PostgreSQL chamam uma e apenas uma funo, no havendo cdigo em seu corpo.

8. Storage

  • O conceito de Espao de Tabelas no PostgreSQL se refere a uma pasta que gerenciada pelo SGBD. No possvel definirDataFilesespecficos. A nica influncia sobre osDataFiles especificar o formato de armazenamento nas colunas com valores grandes.
  • O PostgreSQL no tem implementado explicitamente o conceito de extenses e segmentos.
  • Ainda no possvel especificar o local de armazenamento separado para reas temporrias (para operaes deRollback ,Ordenao ,Indexao , etc). Estas reas ficam todas no mesmo local que o catlogo do sistema.

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 cpia de arquivos de dados semelhante em ambos.
  • Conceito de Stand By semelhante em ambos.
  • O PostgreSQL no possui uma ferramenta deFlashBack .
  • O PostgreSQL no possui ferramenta nativa no estilo do RMAN.

10. Segurana

  • GRANT e REVOKE tem funcionalidade semelhante.
  • SCHEMAS no so automaticamente atrelados ao usurio 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 permisses necessrias para isso.
  • O ROLE connect no Oracle realizado atravs do pg_hba.conf no PostgreSQL.
  • O ROLE resource no Oracle semelhante a possuir privilgio para criar objetos num esquema do PostgreSQL.
  • O Role DBA no Oracle semelhante ao superusurio do PostgreSQL.
  • O Role SYS no Oracle semelhante ao usurio POSTGRES no PostgreSQL.
  • * Os GROUPs foram convertidospara ROLEsna verso 8.1

11. Lgica da Migrao - Ora2pg 12. Ora2pg

  • Feito em PERL. Depende dos mdulos DBI, DBD::Pg e DBD::Oracle.
  • Importa dados e definies do Oracle para um arquivo texto ou direto para um banco no PostgreSQL.
  • Suporte a extrao 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 especfico para ser importado.
  • Corrige nomes de tipos de dados diferentes.
  • Extrai o cdigo do corpo de triggers numa funo.
  • Algumas funes com nome diferente precisam.
  • Funes em PL/SQL geralmente precisam de um pouco de edio manual.
  • Funes SQL diferentes precisam de edio manual.

13. 14. 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). 15. Referncias Oracle-http://www.oracle.com PostgreSQL-http://www.postgresql.org TechDocs (Migrao)-http://www.postgresql.org/docs/techdocs.3 Ora2Pg -http://www.samse.fr/GPL/ora2pg/ora2pg.html DBI-Link-http://pgfoundry.org/projects/dbi-link/ Histria de horror de Migrao para PostgreSQL - http://www.frankhilliard.com/horrorstory.cfm 16. Contatos Fbio Telles< [email_address] > < [email_address] > Fernando Ike < [email_address] > < [email_address] >