- 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
- FROM t1, t2 > FROM t1 LEFT OUTER JOIN t2
- WHERE t1.id = t2.id(+)ON t1.id = t2.id
- DECODE (sexo, 'M',> CASE WHEN sexo = 'M' then
'Masculino'
- 'Masculino,'F','Feminino') WHEN sexo = 'F' then 'Feminino'
END
- sysdate, systimestamp > current_date, current_timestamp
- 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] >