Comentando sobre o que vc diz da tal rotina, eu acrescentaria :
  
  a) vc SABE que o APPEND num INSERT só funciona SE, além da tabela-destino 
estar em NOLOGGING mode (e sem índices ativos, preferencialmente) SE O INSERT 
FOR DE MÚLTIPLAS LINHAS, ie :
  
    INSERT /*+ APPEND */ intoi tabeladestino (SELECT que traz muitas linhas);
        
        okdoc ? Usar o APPEND num comando tipo :
        
        INSERT /*+ APPEND */ INTO tabela VALUES (valoresdesejados);

        só te traz como resultado o desperdício de 13 toques no teclado, não 
adianta DE NADA, não serve DE NADA, sim ??
        
 b) como derivação de a) acima, será que vc está usando processamento 
row-by-row, tipo :
 
 for cursor in loop
   ...faz uns IFs e coisas do tipo...
    INSERT INTO tabeladestino VALUES(valorescalculados);
end loop;

   ==> SE está, isso DIFICILMENTE vai ter boa performance , pois ao contrário 
de um :

  INSERT INTO tabela (select com as fontes de dados);

  processamento via cursor NÂO pode ser otimizado pelo CBO (ele só otimiza 
comandos SQLs completos), implica em MONTES de idas e vindas ao banco de dados, 
é tudo de ruim.... No máximo, se não der pra fazer a carga num INSERT só (ou 
num MERGE, enfim) , então PELO MENOS use BULK COLLECT e ARRAY PROCESSING... Ou 
ainda, ir juntando os registros a serem inseridos numa GTT e no fim da rotina 
se faz um 
  
  INSERT /* APPEND */ into tabeladestino (SELECT * FROm gtt);
  
  c) COMMIT só no final da rotina, claro, EVITANDO os WAITs relacionados a redo 
sync : provavelmente isso implica em se ter uma tablespace de UNDO gigantesca, 
mas be it...
  
  d) não entendi ainda que apito toca a tal "tabela de despesa" que é 
monstruosa : ela é a tabela-destino, aonde os dados vão ser inseridos, OU ela é 
a origem dos dados, aí vc tem que fazer uma consulta nela para extrair os dados 
a serem inseridos em oura ??
  SE a tal tabela "monstro" for a tabela a ser inserida, pode-se supor que o 
que está fazendo a carga demorar seja que a cada INSERT os índices estão sendo 
atualizados e as constraints checadas, implicando numa varredura da 
tabela-monstro inteira : se for isso, pode-se pensar em Particionamento, em ter 
constraints que só são checadas em tempo de COMMIT (ou mesmo desabilitadas e só 
 rehabilitadas no fim da carga), índices disabled...
  SE a tal tabela "monstro" na verdade contém os dados a serem lidos, 
processados e depois inseridos numa outra tabela-destino, aí o teu alvo é 
DIMINUIR FORTEMENTE a qtdade de blocos que precisam ser lidos na tabela 
"monstro" para se chegar aos dados : isso nos leva a pensar em Particionamento, 
em um índice SELETIVO (ie, um índice de função que indexe APENAS a porção de 
dados "monstruosos" que precisam ser lidos), coisas do tipo...
  
  []s
  
    Chiappa
        

--- Em oracle_br@yahoogrupos.com.br, Samuel Santos  escreveu
>
> Estamos realizando várias cargas de dados em através de script PL/SQL. A 
> quantidade de registro difere entre 5Milhões a 20Milhões de registros.
> Sendo assim temos neste exato momento uma tabela de despesa na qual é 
> MOSTRUOSA, já a destrinchamos o máximo que podia, utilizamos Hints: 
> Parlelismo, APPEND... mas ainda sim ja tem no mínimo 3horas dessa carga. 
> 
> Gostaria de uma ajuda de vcs para sugerir\dica do que podemos alterar nos 
> parâmetros do SGBD, de modo que nos auxilie ainda mais nestas cargas. Estamos 
> analisando query a query, através do Explain...mas ainda sim precisamos de 
> mais melhorias...
>  
> 
> 
> >________________________________
> > De: Fabricio Pedroso Jorge 
> >Para: oracle_br@yahoogrupos.com.br 
> >Enviadas: Terça-feira, 5 de Fevereiro de 2013 17:06
> >Assunto: Re: [oracle_br] URGENTE - SGA x PGA
> > 
> >Tira um AWR em um período de carga (umas 2 horas) e de um período sem carga
> >(também de umas duas horas)
> >
> >Veja as seções dos memory advisors pra ver se há a necessidade de mudança
> >nos parâmetros de memória.
> >
> >Mas o principal é: Qual é esse problema crítico?
> >
> >Em 5 de fevereiro de 2013 17:03, Samuel Santos
> > escreveu:
> >
> >> **
> >>
> >>
> >> Pessoal, Boa Tarde!
> >>
> >> Peço-lhes uma ajuda para solucionar um problema crítico de carga de dados
> >> no servidor de um cliente, segue as características do ambiente:
> >>
> >> Modelo: DELL R710  - 2Us
> >> S/T: B3Q82R1
> >> 2 Processadores Six-Core 2,40 GHZ
> >> Memória 144G
> >> 2 HDs de 1T
> >> Servidor não possui placa HBA
> >> Sistema Operacional: Red Hat 5.8 Enterprise 64B
> >> Oracle Enterprise 11.2.0.3
> >>
> >>
> >> O que vc's sugerem para alteração\ajuste nos paramentros de SGA, PGA, etc?
> >>
> >> SQL>  show parameter target
> >>
> >> NAME                                 TYPE        VALUE
> >> ------------------------------------ -----------
> >> ------------------------------
> >> archive_lag_target                   integer     0
> >> db_flashback_retention_target        integer     1440
> >> fast_start_io_target                 integer     0
> >> fast_start_mttr_target               integer     0
> >> memory_max_target                    big integer 0
> >> memory_target                        big integer 0
> >> parallel_servers_target              integer     192
> >> pga_aggregate_target                 big integer 29842M
> >> sga_target                           big integer 89600M
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>  
> >>
> >
> >
> >
> >-- 
> >***Fabrício Pedroso Jorge.*
> >
> >Administrador de Banco de Dados
> >Oracle 11g Certified SQL Expert
> >Oracle 11g Certified Associate
> >Oracle 11g Certified Professional
> >Linux Professional Institute Certified Level I (LPIC-I)
> >certificacaodb.com.br
> >
> >*Resumo Profissional:*
> >http://br.linkedin.com/in/fabriciojorge
> >
> >*Contatos:*
> >+ 55 91 88991116 /
> >+ 55 11 82223651
> >fpjbito@...
> >
> >
> >[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
> >
> >
> >
> >
> >
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a