fbdo:
Olha, na minha opinião o overhead para passar do banco para a aplicação Java, e de volta para o banco, é impeditivo para quantidade de dados de médio para grande volume.
Tem coisas que vão além do senso comum. Há aplicações que mesmo passar todos os dados para o java e devolvê-los ao banco é mais rápido do que executar o processo via PL/SQL. Tudo é uma questão de teste.
A implementação fica extremamente mais simples se for feita apenas entre dois bancos de cada vez. Além disso, se os SGBD’s forem os mesmos, a coisa fica mais fácil (afinal, a linguagem sql e as tabelas de estrutura são as mesmas). O que pode ser um pouco mais chato é a adequação de constraints diferentes.
Talvez um jeito que dê menos problemas seria:
[list]criar todas as tabelas inexistentes (sem constraints ou validações, apenas colunas puras)[/list]
[list]criar todas as colunas inexistentes (novamente sem constraints ou validações)[/list]
[list]alterar todas as colunas que não sejam restritivas (por ex: transformar Integer em VARCHAR2, ou Varchar2(32) para VARCHAR2(64))[/list]
[list]remover da base destino todas as constraints que não existem na base modelo[/list]
[list]desativar todas as constraints e triggers das tabelas que serão manipuladas[/list]
[list]atualizar os dados (se houverem colunas incompatíveis, deverá estudar caso a caso, aqui o processo tende a ser bem mais chato)[/list]
[list]criar todas as constraints inexistentes (se possivel, sem check constraint, para ir rápido)[/list]
[list]apagar todos os objetos[/list]
[list]criar todos os objetos da base modelo na base destino[/list]
[list]Habilitar constraints (se possivel, sem check constraint, para ir rápido)[/list]
[list]Comparar a estrutura, para localizar possíveis problemas e corrigí-los[/list]
[list]Checar a validação de constraints por tabela (efetuar o processo de checagem de validação de constraint para cada tabela, cheque as tabelas cadastrais e depois as transacionais - Esse processo pode demorar muito, dependendo da quantia de dados em cada tabela).[/list]
[list]Habilitar as triggers[/list]
Enfim, é isso.
Outra coisa, se for usar java e o desempenho for algo importante: Não use Hibernate ou qualquer outro framework “mágico”. Utilize JDBC puro. Vc pode se impressionar com a comparação de desempenho entre hibernate d jdbc puro, é algo absurdo. Uma vez eu fiz um processo desse com hibernate que demorava “apenas” 3 dias para concluir, então eu removi todo o hibernate e coloquei jdbc NO MESMO PROCESSO e a operação demorou apenas poucas horas.
Espero ter ajudado