Entao Chiappa, 

com o cursor eu quero garantir que os registros entrem na tabela, pois se der 
algum problema durante a leitura ou no banco , eu consigo inserir apartir do 
ultimo, e não inicio tudo novamente. 



Como resolvo isso ?




To: oracle_br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Tue, 27 May 2008 22:15:48 +0000
Subject: [oracle_br] Re: Performance ( Insert Select via dblink)



















    
            Colega, não acompanhei a thread toda, mas de cara já digo : COMMIT

frequente, a cada x registros, ***** NÃO É *****, NUNCA foi e NUNCA

SERÁ a maneira melhor e mais performática de se processar um SQL, em

especial INSERTs,

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4951966319022#4955604534852

 mostra exatamente isso.... E em sendo um único INSERT só com a query,

se a tabela-destino estiver como NOLOGGING, se durante o INSERT vc  vc

desligar as triggers, desativar os índices (NÂO é dropar!!), desativar

(ou ao menos ter as constraints validadas só no commit se der) E usar

um INSERT /*+ APPEND */, aposto um picolé de limão que a performance

assim vai ** HUMILHAR ** , *** ESMAGAR ***, ***** TRITURAR **** a

performance da versão usando CURSOR e COMITs frequentes..... No

workshop eu dei um exemplo simples, pequeno, aonde isso era

demonstrado, mas em ambiente de Produção o ganho (em não sendo gerado

quase nenhum redo log, nem undo) via de regra é fenomenalmente maior...



[]s



Chiappa



--- Em oracle_br@yahoogrupos.com.br, Adriano Cavalcanti <[EMAIL PROTECTED]>

escreveu

>

> é Isso eu tinha pensado. 

> Achei que tivesse algo mais performatico. 

> 

> como tenho 315 mil registro, acho melhor então fazer sempre uma

conta para pegar um quarto de registro  por commit. 

> 

> Mas valeu

> 

> 

> 

> To: oracle_br@yahoogrupos.com.br

> From: [EMAIL PROTECTED]

> Date: Tue, 27 May 2008 08:18:24 -0300

> Subject: Re: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

> 

>     

>             Adriano, você pode ter um contador dentro do loop do

cursor e quando o contador chegar a 50, você dá o commit e zera o

contador novamente. É isso que você precisa?

> 

> Márcio Ricardo Alves da Silva

> 

> Programador Pleno

> 

> Oracle Certified Associate 9i

> 

> * [EMAIL PROTECTED]

> 

> 

> 

> Config Informática Ltda

> 

> & Av. Eng. Luis Carlos Berrini, 801 - 7º andar

> 

> & 04571-010 - Brooklin Novo - São Paulo - SP

> 

> ( Fone (11) 5501-8300

> 

> ( Fax (11) 5501-8302

> 

> 8 www.config.com.br ----- Original Message ----- 

> 

> 

> 

> From: Adriano Cavalcanti 

> 

>   To: oracle_br@yahoogrupos.com.br 

> 

>   Sent: Monday, May 26, 2008 8:06 PM

> 

>   Subject: RE: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> Mácio não entendi muito bem. 

> 

> 

> 

> Meu senário é o seguinte. 

> 

> 

> 

> Este select ai retorna (depois de quase uma hora) 315 mil registros. 

> 

> 

> 

> Como faço para inserir e dar commit a cada 50 registros? 

> 

> 

> 

> To: oracle_br@yahoogrupos.com.br

> 

>   From: [EMAIL PROTECTED]

> 

>   Date: Mon, 19 May 2008 15:46:51 -0300

> 

>   Subject: Re: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> Adriano no meu caso eu fiz um cursor do que eu precisava e depois

fui fazendo o insert dentro de um while. Eu acho que você poderia

fazer um cursor e atualizar dentro do while... pegar as condições

where tua e colocar no cursor e no insert ficaria somente o select,

claro com poucos parametros... Creio que deve ser as suas condições

que esteja demorando... Tente transformar no cursor e depois faça o teste.

> 

> 

> 

> Márcio Ricardo Alves da Silva

> 

> 

> 

> Programador Pleno

> 

> 

> 

> Oracle Certified Associate 9i

> 

> 

> 

> * [EMAIL PROTECTED]

> 

> 

> 

> Config Informática Ltda

> 

> 

> 

> & Av. Eng. Luis Carlos Berrini, 801 - 7º andar

> 

> 

> 

> & 04571-010 - Brooklin Novo - São Paulo - SP

> 

> 

> 

> ( Fone (11) 5501-8300

> 

> 

> 

> ( Fax (11) 5501-8302

> 

> 

> 

> 8 www.config.com.br ----- Original Message ----- 

> 

> 

> 

> From: Adriano Cavalcanti 

> 

> 

> 

> To: oracle_br@yahoogrupos.com.br 

> 

> 

> 

> Sent: Monday, May 19, 2008 3:38 PM

> 

> 

> 

> Subject: RE: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> Marcio, não sei ainda como fazer isso. 

> 

> 

> 

> Mas acredite 3 horas de insert não é mole não. 

> 

> 

> 

> Segue insert.

> 

> 

> 

> INSERT INTO TB_BILHETAGEM_LOGICA_FORNEC -- LOGICO

> 

> 

> 

> (

> 

> 

> 

> INT_ID_BILHETAGEM_LOGICA,

> 

> 

> 

> INT_ID_FORNEC_BILHETAGEM,

> 

> 

> 

> INT_ID_PROJETO,

> 

> 

> 

> INT_ID_IMPRESSORA,

> 

> 

> 

> INT_ID_IMPRESSAO,

> 

> 

> 

> INT_ID_DISPOSITIVO_IMPRESSORA,

> 

> 

> 

> STR_IP_IMPRESSORA,

> 

> 

> 

> STR_SERIAL_IMPRESSORA,

> 

> 

> 

> STR_NOME_IMPRESSORA,

> 

> 

> 

> STR_DESCRICAO_IMPRESSORA,

> 

> 

> 

> STR_VERSAO_APP,

> 

> 

> 

> STR_MAC_IMPRESSORA,

> 

> 

> 

> INT_QTD_PAGINAS,

> 

> 

> 

> INT_QTD_PAGINAS_COLORIDAS,

> 

> 

> 

> INT_QTD_PAGINAS_MONO,

> 

> 

> 

> INT_QTD_FOLHAS,

> 

> 

> 

> STR_DESCRICAO_QUALIDADE,

> 

> 

> 

> INT_ID_QUALIDADE_IMPRESSAO,

> 

> 

> 

> STR_NOME_TIPO_IMPRESSAO,

> 

> 

> 

> INT_ID_TIPO_IMPRESSAO,

> 

> 

> 

> STR_DESCRICAO_PAPEL,

> 

> 

> 

> BT_ISDUPLEX,

> 

> 

> 

> STR_NOME_FILA_IMPRESSAO,

> 

> 

> 

> STR_NOME_SERVIDOR,

> 

> 

> 

> STR_MAC_SERVIDOR,

> 

> 

> 

> STR_IP_SERVIDOR,

> 

> 

> 

> STR_SUB_NET_ENDERECO,

> 

> 

> 

> STR_MASCARA_SERVIDOR,

> 

> 

> 

> STR_NOME_USUARIO,

> 

> 

> 

> STR_ET_NOME,

> 

> 

> 

> FLT_SPOOLSIZE,

> 

> 

> 

> INT_CODIGO_COR,

> 

> 

> 

> INT_ID_TAMANHO_PAPEL,

> 

> 

> 

> STR_NOME_DOCUMENTO,

> 

> 

> 

> STR_NOME_APLICATIVO,

> 

> 

> 

> STR_TITULO_DOCUMENTO,

> 

> 

> 

> STR_ORIGEM_IMPRESSAO,

> 

> 

> 

> STR_DESCRI_TAMANHO_IMPRESSAO,

> 

> 

> 

> DT_DATA_REF,

> 

> 

> 

> DT_IMPRESSAO,

> 

> 

> 

> DT_CADASTRO,

> 

> 

> 

> DT_BILHETAGEM

> 

> 

> 

> )

> 

> 

> 

> SELECT

> 

> 

> 

> SQ_ID_BILHETAGEM_LOGICA_FORNEC.NEXTVAL,

> 

> 

> 

> 1,

> 

> 

> 

> 2,

> 

> 

> 

> "pr"."IDPrinter",

> 

> 

> 

> "pj"."ID_JOBS",

> 

> 

> 

> NULL,

> 

> 

> 

> FC_TRATA_IP("pr"."JetDirectName") "ip",

> 

> 

> 

> NULL,

> 

> 

> 

> "pr"."PrinterName",

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> "pj"."Pages",

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> "pj"."Duplex",

> 

> 

> 

> NULL,

> 

> 

> 

> "pss"."PrintServerName",

> 

> 

> 

> NULL,

> 

> 

> 

> "pss"."IP",

> 

> 

> 

> "ss"."SubNetwork",

> 

> 

> 

> "pss"."Mask",

> 

> 

> 

> "ac"."Name",

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> "pj"."IDPAPrintColor",

> 

> 

> 

> "pj"."IDPAPaperSize",

> 

> 

> 

> "pj"."Document",

> 

> 

> 

> "pa"."AppName",

> 

> 

> 

> NULL,

> 

> 

> 

> NULL,

> 

> 

> 

> "ps"."Description",

> 

> 

> 

> NULL,

> 

> 

> 

> "pj"."Date",

> 

> 

> 

> NULL,

> 

> 

> 

> sysdate

> 

> 

> 

> FROM

> 

> 

> 

> [EMAIL PROTECTED] "pr"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "pj"

> 

> 

> 

> ON "pj"."IDPrinter" = "pr"."IDPrinter"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "pa"

> 

> 

> 

> ON "pa"."IDPAApp" = "pj"."IDPAApp"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "ac"

> 

> 

> 

> ON "ac"."IDAccount" = "pj"."IDAccount"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "ps"

> 

> 

> 

> ON "ps"."IDPAPaperSize" = "pj"."IDPAPaperSize"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "pss"

> 

> 

> 

> ON "pss"."IDPrintServer" = "pr"."IDPrintServer"

> 

> 

> 

> INNER JOIN [EMAIL PROTECTED] "ss"

> 

> 

> 

> ON "ss"."IDSiteSubNetwork" = "pss"."IDSiteSubNetwork"

> 

> 

> 

> WHERE

> 

> 

> 

> "pj"."Date" BETWEEN '20070803' AND '20070804'

> 

> 

> 

> AND "pj"."ID_JOBS" > 0

> 

> 

> 

> To: oracle_br@yahoogrupos.com.br

> 

> 

> 

> From: [EMAIL PROTECTED]

> 

> 

> 

> Date: Mon, 19 May 2008 14:58:48 -0300

> 

> 

> 

> Subject: Re: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> Adriano, eu fiz uma package que faz insert select com dblink

também... eu faço o commit a cada registro que passa... e o processo é

rápido.

> 

> 

> 

> Posta o seu insert ai.

> 

> 

> 

> Márcio Ricardo Alves da Silva

> 

> 

> 

> Programador Pleno

> 

> 

> 

> Oracle Certified Associate 9i

> 

> 

> 

> * [EMAIL PROTECTED]

> 

> 

> 

> Config Informática Ltda

> 

> 

> 

> & Av. Eng. Luis Carlos Berrini, 801 - 7º andar

> 

> 

> 

> & 04571-010 - Brooklin Novo - São Paulo - SP

> 

> 

> 

> ( Fone (11) 5501-8300

> 

> 

> 

> ( Fax (11) 5501-8302

> 

> 

> 

> 8 www.config.com.br ----- Original Message ----- 

> 

> 

> 

> From: Adriano Cavalcanti 

> 

> 

> 

> To: oracle_br@yahoogrupos.com.br 

> 

> 

> 

> Sent: Monday, May 19, 2008 2:50 PM

> 

> 

> 

> Subject: [oracle_br] Performance ( Insert Select via dblink)

> 

> 

> 

> Pessoal, 

> 

> 

> 

> Estou revendo um Insert into com select, para uma base em sql server. 

> 

> 

> 

> a quantidade de registro é de 315000 registro ( isso mesmo ,

trezentos e quinze mil registros). 

> 

> 

> 

> Levou 3 horas para conclusão do Insert. 

> 

> 

> 

> alguém me ajude a diminuir isso. 

> 

> 

> 

> Já estou revendo indexes no banco remoto. 

> 

> 

> 

> Mas não sei se é o caso. 

> 

> 

> 

> Outra duvida é, como eu consigo fazer o commit aos poucos, pois só

vi o resultado no final de 3 horas. 

> 

> 

> 

> Obrigado 

> 

> 

> 

> __________________________________________________________

> 

> 

> 

> Receba GRÁTIS as mensagens do Messenger no seu celular quando você

estiver offline. Conheça o MSN Mobile!

> 

> 

> 

> http://mobile.live.com/signup/signup2.aspx?lc=pt-br

> 

> 

> 

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

> 

> 

> 

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

> 

> 

> 

> __________________________________________________________

> 

> 

> 

> Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de

relacionamentos com até 6,000 fotos!

> 

> 

> 

> http://www.amigosdomessenger.com.br

> 

> 

> 

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

> 

> 

> 

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

> 

> 

> 

> __________________________________________________________

> 

>   Confira vídeos com notícias do NY Times, gols direto do Lance,

videocassetadas e muito mais no MSN Video!

> 

>   http://video.msn.com/?mkt=pt-br

> 

> 

> 

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

> 

> 

> 

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

> 

> 

> 

> 

>       

> 

>     

>     

>       

>       

>       

>       

> 

> 

>       

> 

> 

>       

>       

>       

>       

>       

> 

> 

> __________________________________________________________

> Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger!

> http://www.amigosdomessenger.com.br/

> 

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

>




      

    
    
        
        
        
        


        


        
        
        
        
        


_________________________________________________________________
Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver 
offline. Conheça  o MSN Mobile!
http://mobile.live.com/signup/signup2.aspx?lc=pt-br

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

Responder a