Você poderia colocar um loop para comitar a cada 10.000 por exemplo...


Em 12 de julho de 2010 14:02, Samuel Corradi <corrad...@yahoo.com.br>escreveu:

>
>
> Ola pessoal!
>
> Tenho que faz update em um campo do tipo VARCHAR2.
>
> Para isso fiz um PL que abre um cursor e percorrer todas linhas
> alterando os valores.
>
> Agora, estou tendo um problema durante a atualizacao. Aparentemente, os
> redo logs enchem e o sript para. Nao sei dizer exatamente o que estah
> acontecendo, mas acredito que tenho que fazer um controle maior durante
> esse update.
>
> Alguem tem alguma sugestao do que pode estar acontecendo? Alguem jah
> passou por esse trabalho de atualizar muitos registros de uma tabela?
>
> Segue meu PL para referencia:
>
> ================================================
>
> DECLARE
> CURSOR c1 IS select * from sadig.mod0046;
> flag BOOLEAN DEFAULT false;
> tamanho PLS_INTEGER DEFAULT 0;
> codigo VARCHAR2(45);
> nome VARCHAR2(85);
> BEGIN
> FOR registro IN C1
> LOOP
> codigo := TRIM(SUBSTR(registro.f14, INSTR(registro.f14,'-',-1) + 2,
> LENGTH(registro.f14)));
> nome := TRIM(SUBSTR(registro.f14, 1, INSTR(registro.f14,'-',-1) - 2 ));
> UPDATE sadig.mod0046 SET f14=nome || '[' || codigo || ']' WHERE
> f1=registro.f1 and f6=registro.f6;
> END LOOP;
> END;
>
> =================================================
>
> Obrigado!
>
>  
>



-- 
--------------------------------------------------------------
Raul Francisco da Costa Ferreira de Andrade
DBA - OCA - Oracle Certified Associate
COBIT Foundation 4.1
Fone: (41)8855-8874 Brt
email: raulf...@gmail.com
Skype: raul.andrade
www.clickdba.com

"A adversidade leva alguns a serem vencidos
e outros a baterem recordes."
William Arthur Ward


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a