Cara, uma coisa que ajuda muito é desativar todos os índices da tabela2, pois a cada update que o oracle dá ele automaticamente atualiza a arvore de índices, ou seja, se vc for dar 15000 updates em uma tabela, ele ira atualizar 15000 vezes os índices, consumindo recurso da maquina.
Tente desabilitar os índices, fazer a migração, depois criar os índices novamente.. Com certeza vc terá um ganho de perfomence.. Outra coisa que vc pode estar utilizando é o comando MERGE.. de uma olhada no google de como utilizá-lo. Abraço, _______________________________________ Renato Ribeiro Ricci Analista de Sistemas _____ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de euripedes.junior Enviada em: quarta-feira, 18 de junho de 2008 14:33 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Problema com atualização pesada em tabela Olá pessoal tudo bom???? Bom tenho uma dúvida eu preciso atualizar um campo tabela x com referencia ao campo da tabela y. Meu problema é o seguinte está demorando muito pra finalizar a procedure. Eu estou pegando os resultados da tabela y e jogando para um cursor do tipo ROWTYPE e depois estou colocando o UPDATE dentro de um LOOP para atualizar a tabela x, não sei se essa e a melhor forma de fazer, as segestões q vcs tiverem eu agradeco. ##### INFO TABELAS ##### TABELA1 (17598 Linhas) Tabela2 (17045 Linhas) ##### PROCEDURE ##### create or replace PROCEDURE "TESTE" AS BEGIN DECLARE COUNTER NUMBER := 0; CURSOR c_sb IS SELECT B1_COD, B1_CUTMAN FROM TABELA1 WHERE B1_TIPO IN ('01','02','03','04'); atualiza c_sb%ROWTYPE; BEGIN OPEN c_sb; LOOP FETCH c_sb INTO atualiza; EXIT WHEN c_sb%NOTFOUND; COUNTER := COUNTER + 1; UPDATE TABELA2 TB2 SET TB2.B9_CUTMAN = atualiza.B1_CUTMAN WHERE TB2.B9_DATA = '20080131' AND TB2.B9_COD = atualiza.B1_COD; IF COUNTER > 1000 THEN COUNTER := 0; COMMIT; END IF; END LOOP; CLOSE c_sb; END; COMMIT; END TESTE; [As partes desta mensagem que não continham texto foram removidas]