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]