1. Fábio Telles
– Chefe de Desenvolvimento - DTI (Prefeitura
Diadema)
Fernando Ike
- Assistente do DTI (Prefeitura Diadema)
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. 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. 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. 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
●
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.
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.
●
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.
●