BULK COLLET junto com DBLINK

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
srm
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 11 Mar 2009 1:09 pm
Localização: Rio de Janeiro - RJ

Estou tendo dificuldade ao usar o FORALL para inserir registros em uma tabela em outro banco, ligados por dblink
O erro sempre apresentado é ORA-01400 cannot insert NULL

Como preciso enviar dados de uma tabela para outra em grandes quantidades, estava pensando em usar o bulk collet, mas parece que não funciona bem quando se usa em conjunto com dblink. Fiz um teste em uma tabela do mesmo banco e funcionou perfeitamente.

Antes estava usando o INSERT com SELECT e funciona de forma bem rápida, cerca de 50.000 em 7 segundos.
Mas como a quantidade de registros pode chegar a 2.000.000, comecei a usar CURSOR e, inserindo linha a linha, os mesmos 50.000 demorou 2 minutos.

Alguma sugestão ou exemplo de como posso fazer essa transmissão de registros de forma rápida?
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Você tem que colocar sua procedure que faz o insert diretamente na máquina remota do dblink e fazer chamada do programa de sua máquina de origem.
Se você não tiver privilégios para criar o programa lá, fique com a alternativa do insert select, colocar num só comando é a melhor alternativa.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes