Aviso: Este artigo ainda é um rascunho!
Banco de Dados
Introdução
Esse material tem por objetivo descrever os principais passos de uma conversão de dados de uma base Oracle para uma PostgreSQL.
Estrutura das bases
ÿ primordial para que a migração tenha sucesso, que as estruturas de Oracle e PostgreSQL sejam muito semelhantes. As estruturas das bases devem conter as mesmas tabelas e campos, ou seja, com o mesmo passo de migração do UPGRADE. Na base de destino (PostgreSQL) deve ? se criar apenas a estrutura mais básica, apenas tabelas, deixando de fora constrants, triggers e seqüenciadores. Segue abaixo os passos detalhados da conversão:
01 -> Importar um dump Padrão do Postegresql, que servirá de base para extrair a estrutura da base.
02 -> Rodar os scripts da versão que se deseja instalar, nas Duas bases: ORACLE e POSTEGRESQL, e os respectivos scripts devem estar com o mesmo passo de migração do arquivo UPGRADE.
03 -> Gerar o dump do banco Postegresql
04 -> Após gerar o dump, edita-lo separa-lo em vários arquivos de sql, separando os comandos
abaixo:
Criação da tabelas e seqüenciadores;
Criação de index;
Criação de FK;
Criação de Triggers e Funções;
Criação de operatos.
05 -> Após separação dos dados, criar uma novo schema, no mesmo rodar o arquivo de criação de tabelas e seqüenciadores.
ODBC
O aplicativo SQLCopy será utilizado para conversão de bases, utiliza ? se de drivers no ODBC para isso devem ser criados drivers que mapeiem as bases de origem (ORACLE) e destino (PostgreSQL).
SQL Copy

No SQL Copy deve ? se selecionar o driver ODBC das bases de origem e destino. ÿ importante notar que o Schema da base PostgreSQL deve estar entre aspas (?).
Clicando ? se em config é mostrada uma tela semelhante a apresentada na Figura II. Nesta tela são setadas as principais opções do SQLCopy. Dentre elas podemos destacar a forma na qual o erro será demonstrado ao usuário que pode ser ?Generate log?, gerando arquivo de log no diretório do SQLCopy ou ?Interactive Mode? onde as mensagens de erro são mostradas ao usuário em tempo de execução.

Também são importantes as opções de commit na base de destino, que podem ser a cada n tabelas ou registros importados. Fazendo a transferência de tabelas
A tabela TT_CFG deve ser feita a transferência de dados manualmente, abaixo os passos para fazer a transferência da mesma. 01 -> Rodar na base Oracle o comando sql abaixo:
spool c:\cfg.sql;
(SELECT 'INSERT INTO TT_CFG (' AS TEXTO FROM DUAL) UNION ALL ( select texto from ( SELECT COLUMN_NAME||',' AS TEXTO FROM USER_TAB_COLUMNS WHERE TABLE_NAME=capslock('tt_cfg') ORDER BY COLUMN_NAME ) int ) UNION ALL (SELECT ') VALUES (' AS TEXTO FROM DUAL) UNION ALL ( select texto from (
SELECT VALORCOLUNACFG(COLUMN_NAME,DATA_TYPE)||',' as texto FROM USER_TAB_COLUMNS WHERE TABLE_NAME=capslock('tt_cfg') ORDER BY COLUMN_NAME ) INT ) UNION ALL (SELECT ');' AS TEXTO FROM DUAL);
spool off;
02 -> Editar o arquivo c:\cfg.sql, criado acima
03 -> Substituir todos os ?\? por ?\\?;
04 -> Verificar que após o ultimo campo antes do ?)? possui uma virgula, retira-la
05 - > Verificar que após o ultimo valor antes do ?)? possui a virgula, retila-la e salvar o sql.
06 -> Aplicar na base Postgresql.
Para as tabelas Personalizadas (TP), deve-se verificar se o cliente faz uso das mesmas, e se possuem dados, se sim, criar os campos da mesma na mão, com os mesmos campos que as tabelas personalizadas na base ORACLE.
Nas Tabelas TT_ECT e TW_CTA, deve-se excluir a coluna arvore Após serem feitas todos os passos acima pode-se dar inicio a transferência de dados. Fazer a importação no SQLCopy é muito simples basta selecionar a(s) tabela(s) e clicar em Transfer. Não é necessário levar as TW, por se tratarem de views.
Finalizando conversão
Após a conversão ter sido concluída com sucesso deve ? se rodar os script para criação de triggers, foreign keys. ÿ muito importante atualizar as seqüências, pode ser utilizado o sql de exemplo abaixo pelo dbexp, e exportar o resultado do mesmo para arquivo texto, e depois executa-lo pelo putty:
SELECT 'ALTER SEQUENCE ' || SEQUENCE_NAME || ' RESTART WITH ' || To_CHAR(LAST_NUMBER + 1) || ';' FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = 'TOTALI';
Recriar o campo arvore da tabelas tt_ect e TW_cta, com os sqls abaixo:
ALTER TABLE TT_ECT ADD ARVORE VARCHAR(4000); ALTER TABLE TW_CTA ADD ARVORE VARCHAR(4000);
O campo da tabela DUAL deve estar com valor = X. Pois senão irá dar problemas no config.