Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-18 Por tôpico jlchia...@yahoo.com.br [oracle_br]
No caso o colega lá quer fazer UPDATE, e para UPDATE o NOLOGGING é basicamente 
inútil, inócuo, não funfa :vide 
http://nervinformatica.com.br/blog/index.php/2014/06/03/teste-desempenho-com-indices-em-nologging/
 
http://nervinformatica.com.br/blog/index.php/2014/06/03/teste-desempenho-com-indices-em-nologging/
 ...
 Seria útil se ele optasse pelo INSERT /*+ APPEND */  inserindo os novos 
valores , mas já que cfrme outras respostas ele já teve uma excelente resposta 
paralelizando o UPDATE acho que não é o caso...

[]s

  Chiappa

Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-17 Por tôpico Rodrigo Mufalani rodr...@mufalani.com.br [oracle_br]
Já experimentou usar nologging para a tabela e os indices... lembrando que 
depois um backup da mesma...

Obter o Outlook para iOS

From: oracle_br@yahoogrupos.com.br  on behalf of 
jlchia...@yahoo.com.br [oracle_br] 
Sent: Tuesday, October 17, 2017 6:02:45 PM
To: oracle_br@yahoogrupos.com.br
Subject: Re: RES: RES: RES: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 
MILHOES DE LINHAS



Ok : se nesse servidor 50% inferior E rodando serial vc levou duas horas, ** 
faça um teste ** nele paralelizando o UPDATE com digamos umas 4 slaves e veja o 
que acontece SE o ganho for bom, taca um DOP ainda maior em PROD que vc 
deve ter uma redução significativa do tempo

[]s

  Chiappa




Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-17 Por tôpico Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
Opa, por nada Ricardo!

Fico feliz em ter ajudado.
Grande abraço!

Em 17 de outubro de 2017 12:47, Ricardo Sá ricardo@terra.com.br
[oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Show,
>
> @Gustavo, era isto mesmo que eu precisava.
>
> Muito obrigado.
>
>
>
> @Rodrigo,
>
> Agradeço também a ajuda.
>
>
>
>
>
> *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
> *Enviada em:* terça-feira, 17 de outubro de 2017 12:09
> *Para:* oracle_br@yahoogrupos.com.br
> *Assunto:* Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES
> DE LINHAS
>
>
>
>
>
> Boa tarde, Ricardo!
>
>
>
> Veja se isto ajuda: É um bloco PL/SQL que, a cada 500 registros
> atualizados, efetua um COMMIT, para não comprometer a área de Rollback...
>
> Obs: Efetuar commit a cada 500 registros é só um exemplo... Este valor
> pode ser maior ou menor, de acordo com a área de Rollback...
>
>
>
>
>
> DECLARE
>
>   vQtLinhas NUMBER(3) := 0;
>
>
>
> BEGIN
>
>
>
>   FOR Reg IN (SELECT CAMPO_PK ID_TABELA -- Campo chave da tabela
>
>   FROM   TABELA)
>
>   LOOP
>
>
>
> UPDATE TABELA
>
> SETCAMPO_CHAR = ''
>
> WHERE  CAMPO_PK   = Reg.ID_TABELA;
>
>
>
> vQtLinhas := vQtLinhas + 1; -- Registra a Qtde de Linhas atualizadas
>
>
>
> IF vQtLinhas = 500 THEN -- Quando o total de linhas atualizadas
> atingir 500, efetua um COMMIT;
>
>   COMMIT;
>
>   vQtLinhas := 0;
>
> END IF;
>
>
>
>   END LOOP;
>
>
>
>   COMMIT; -- Este COMMIT é importante para atualizar o último bloco de
> linhas que não chegou a 500 (Ex: As últimas 387 linhas)
>
>
>
> END;
>
>
>
>
>
>
>
> Em 17 de outubro de 2017 11:34, Ricardo Sá ricardo@terra.com.br
> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>
>
>
> Bom dia, a todos.
>
>
>
> Solicito a gentileza se alguém pode me ajudar a resolver uma questão.
>
>
>
> Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes
> de linhas).
>
>
>
> O update é sobre uma coluna CHAR(1) com o valor “ “.
>
>
>
> Pensei em um bloco PLSQL, mas me falta neste momento criatividade para
> montar este bloco.
>
>
>
> Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2
> nós esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que
> foi construído desta forma).
>
>
>
> Alguem poderia, me ajudar nesta questão.
>
>
>
> Ricardo Sá
>
> (11) 98286-0048
>
>
>
>
>
> --
>
> Atenciosamente,
> *Gustavo Guedes de Sene*
>
> 
>



-- 
Atenciosamente,
*Gustavo Guedes de Sene*


Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-17 Por tôpico Gustavo Guedes guedescomputa...@gmail.com [oracle_br]
Boa tarde, Ricardo!

Veja se isto ajuda: É um bloco PL/SQL que, a cada 500 registros
atualizados, efetua um COMMIT, para não comprometer a área de Rollback...
Obs: Efetuar commit a cada 500 registros é só um exemplo... Este valor pode
ser maior ou menor, de acordo com a área de Rollback...


DECLARE
  vQtLinhas NUMBER(3) := 0;

BEGIN

  FOR Reg IN (SELECT CAMPO_PK ID_TABELA -- Campo chave da tabela
  FROM   TABELA)
  LOOP

UPDATE TABELA
SETCAMPO_CHAR = ''
WHERE  CAMPO_PK   = Reg.ID_TABELA;

vQtLinhas := vQtLinhas + 1; -- Registra a Qtde de Linhas atualizadas

IF vQtLinhas = 500 THEN -- Quando o total de linhas atualizadas atingir
500, efetua um COMMIT;
  COMMIT;
  vQtLinhas := 0;
END IF;

  END LOOP;

  COMMIT; -- Este COMMIT é importante para atualizar o último bloco de
linhas que não chegou a 500 (Ex: As últimas 387 linhas)

END;



Em 17 de outubro de 2017 11:34, Ricardo Sá ricardo@terra.com.br
[oracle_br]  escreveu:

>
>
> Bom dia, a todos.
>
>
>
> Solicito a gentileza se alguém pode me ajudar a resolver uma questão.
>
>
>
> Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes
> de linhas).
>
>
>
> O update é sobre uma coluna CHAR(1) com o valor “ “.
>
>
>
> Pensei em um bloco PLSQL, mas me falta neste momento criatividade para
> montar este bloco.
>
>
>
> Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2
> nós esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que
> foi construído desta forma).
>
>
>
> Alguem poderia, me ajudar nesta questão.
>
>
>
> Ricardo Sá
>
> (11) 98286-0048
>
> 
>



-- 
Atenciosamente,
*Gustavo Guedes de Sene*


Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-17 Por tôpico Rodrigo Mufalani rodr...@mufalani.com.br [oracle_br]
Bom dia,

Há muito tempo atrás tive o privilégio de assitir no GUOB uma palestra do 
Tom Kyte onde ele ensinou a usar processamento paralelo no SE. Mesmo você 
rodando no EE, pode se beneficiar dessa funcionalidade:

 
https://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:4248554900346593542

   Faz o update por rowid, divide o processamento em blocos de rowid.

Att
Mufalani

Obter o Outlook para iOS<https://aka.ms/o0ukef>

From: oracle_br@yahoogrupos.com.br <oracle_br@yahoogrupos.com.br> on behalf of 
Ricardo Sá ricardo@terra.com.br [oracle_br] <oracle_br@yahoogrupos.com.br>
Sent: Tuesday, October 17, 2017 12:01:10 PM
To: oracle_br@yahoogrupos.com.br
Subject: RES: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE 
LINHAS


Rodrigo,
Concordo contigo, mas como eu havia pedido. Me falta criatividade pra montar 
este bloco, pois o update não tem condição, ou seja, é um UPDATE puro, UPDATE 
TABELA SET COLUNA=’ ‘;
Minha duvida, é como eu montaria este bloco.

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
Enviada em: terça-feira, 17 de outubro de 2017 11:55
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS


Bom dia,

O jeito mais rápido, quase certo, vai ser um full scan. O jeito mais 
tranquilo, mas vai demorar algum tempo, seria fazer um pl/sql para atualizar em 
blocos de registros...

Obter o Outlook para iOS<https://aka.ms/o0ukef>

From: oracle_br@yahoogrupos.com.br<mailto:oracle_br@yahoogrupos.com.br> 
<oracle_br@yahoogrupos.com.br<mailto:oracle_br@yahoogrupos.com.br>> on behalf 
of Ricardo Sá ricardo@terra.com.br<mailto:ricardo@terra.com.br> 
[oracle_br] <oracle_br@yahoogrupos.com.br<mailto:oracle_br@yahoogrupos.com.br>>
Sent: Tuesday, October 17, 2017 11:34:26 AM
To: oracle_br@yahoogrupos.com.br<mailto:oracle_br@yahoogrupos.com.br>
Subject: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS


Bom dia, a todos.

Solicito a gentileza se alguém pode me ajudar a resolver uma questão.

Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes de 
linhas).

O update é sobre uma coluna CHAR(1) com o valor “ “.

Pensei em um bloco PLSQL, mas me falta neste momento criatividade para montar 
este bloco.

Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2 nós 
esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que foi 
construído desta forma).

Alguem poderia, me ajudar nesta questão.

Ricardo Sá
(11) 98286-0048




Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS

2017-10-17 Por tôpico Rodrigo Mufalani rodr...@mufalani.com.br [oracle_br]
Bom dia,

O jeito mais rápido, quase certo, vai ser um full scan. O jeito mais 
tranquilo, mas vai demorar algum tempo, seria fazer um pl/sql para atualizar em 
blocos de registros...

Obter o Outlook para iOS

From: oracle_br@yahoogrupos.com.br  on behalf of 
Ricardo Sá ricardo@terra.com.br [oracle_br] 
Sent: Tuesday, October 17, 2017 11:34:26 AM
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS


Bom dia, a todos.

Solicito a gentileza se alguém pode me ajudar a resolver uma questão.

Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes de 
linhas).

O update é sobre uma coluna CHAR(1) com o valor “ “.

Pensei em um bloco PLSQL, mas me falta neste momento criatividade para montar 
este bloco.

Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2 nós 
esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que foi 
construído desta forma).

Alguem poderia, me ajudar nesta questão.

Ricardo Sá
(11) 98286-0048