[oracle_br] Re: Order by
Tá, mas esses "alguns grants" não são suficientes para vc fazer um trace e/ou consultar as v$ necessárias para se obter o texto E os planos de execução *** EXATOS e REAIS *** dos SQLs, para primeiro comprovar que a query sendo executada no client está RIGOROSAMENTE IGUAL á query testada direto no servidor e Depois comprovar se o Plano é o mesmo ou não ??? Pois como eu disse, basta um binding e/ou um valor de pesquisa diferente para se obter Planos totalmente diferentes, em alguns casos Como eu disse, vc só deve 'atacar' a frente de eventuais alterações de parâmetros SE e APENAS SE vc obter performance diferente no client e no servidor para o MESMA EXATA query com o MESMO EXATO Plano de ExecuçãoIsso é IMPORTANTE : please cheque SQL e Planos antes de sequer PENSAR a mexer no database... SE for isso mesmo de diferentes performances para mesmo sql com mesmo plano, aí de cara a gente Questionaria essa sort_area_size de 209.715.200 bytes : 200 megabytes é ridiculamente minúsculo, acho que é tranquilo passar (a nível de sessão, que seja, para teste) o gerenciamento de workarea para MANUAL e alterar sort_area_size para alguns poucos gigabytes (e hash_area_size para 2x sort_area_size, se o Plano usa algum tipo de hashing)... []s Chiappa
Re: [oracle_br] Re: Order by
Caros, Esta query roda via aplicação? Se for o que tem por trás? Um hibernt? Enviado do meu iPhone > Em 15/04/2015, às 13:44, lmarinh...@yahoo.com.br [oracle_br] > escreveu: > > Obrigado Chiappa! > > Então como eu não tenho o total acesso neste servidor, apenas com alguns > grants, Aqui esta as configurações. > > sort_area_size integer 209715200 > sga_max_size big integer 12G > sga_targetbig integer 12G > shared_pool_reserved_sizebig integer 199648870 > shared_pool_size big integer 3G > pga_aggregate_target big integer 2576980377 > hash_area_size integer 419430400 > > Fiz o plano do meu lado e solicitei o pessoal responsável para enviar do lado > deles. > > LM >
[oracle_br] Re: Order by
Obrigado Chiappa! Então como eu não tenho o total acesso neste servidor, apenas com alguns grants, Aqui esta as configurações. sort_area_size integer 209715200 sga_max_size big integer 12G sga_targetbig integer 12G shared_pool_reserved_sizebig integer 199648870 shared_pool_size big integer 3G pga_aggregate_target big integer 2576980377 hash_area_size integer 419430400 Fiz o plano do meu lado e solicitei o pessoal responsável para enviar do lado deles. LM
[oracle_br] Re: Order by
Obrigado Chiappa! Então como eu não tenho o total acesso neste servidor, apenas com alguns grants, mas posso te garantir já que a PGA não esta AUTO aqui esta as configurações. sort_area_size integer 209715200 sga_max_size big integer 12G sga_target big integer 12G shared_pool_reserved_sizebig integer 199648870 shared_pool_size big integer 3G pga_aggregate_target big integer 2576980377 hash_area_size integer 419430400 Fiz o plano do meu lado e solicitei o pessoal responsável para enviar do lado deles. LM
Re: [oracle_br] Re: Order by
Quantas rows essa query retorna? 2015-04-13 12:09 GMT-03:00 jlchia...@yahoo.com.br [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > Hmmm... Quando vc fala que executando no servidor roda em segundos e no > cliente roda em minutos, vc TEM CERTEZA que está testando MAÇÃ com MAÇÃ, ie > : é EXATAMENTE O MESMO SQL , com ** EXATAMENTE O MESMO *** texto, > com EXATAMENTE OS MESMOS bindings Basta um mínimo binding diferente > para se obter planos diferentes, em alguns casos... > > Se for MESMO SQLs iguaizinhos até o último detalhee taanto lá no cliente > quanto aqui no servidor, qual é o plano de execução ** real ** (ie, não é > pedir um EXPLAIN PLAN, mas sim o plano que REALMENTE foi usado, extraído do > cache com DBMS_XPLAN.DISPLAY_CURSOR e INCLUINDO as estatísticas de uso do > SQL) , tanto lá quanto cá ??? > > ==> Se forem planos diferentes para RIGOROSAMENTE O MESMO SQL, aí pergunto > : as estatísticas do CBO estão OK , as colunas A-ROWS e E-ROWS fazem > sentido ?? E a DIFERENÇA das estatísticas de sessão (ie, o resultado datual > menos o anterior), é interessante se ccoletar, também ... Se vc não sabe > como, http://rwijk.blogspot.com.br/2008/03/dbmsxplandisplaycursor.html dá > um overview na obtenção de planos e > https://asktom.oracle.com/pls/apex/ASKTOM.download_file?p_file=6551378329289980701 > tem um script exemplo de como obter a diferença das stats de sessão... > SE os planos forem iguais ou equivalentes E as estats do CBO estiverem > bem, vc pode considerar eventualmente setar na sessão o gerenciamento de > PGA manual (vc não diz mas MUITO PROVAVELMENTE nesse banco ele deve estar > automático) e maanualmente setar uma SORT_AREA_SIZE (e uma HASH_AREA_SIZE, > se ffor o caso) anormalmente maiores e medir de novo... > > Caso nenhuma das linhas de teste/investigação acima resulte, aí a gente > chega nas questões de hardware : ocorre que a diferença única entre > executar o mesmo SQL no cliente e no servidor é o tráfego de rede > obviamente maior no primeiro caso - aí a gente chega no nível de se pedir > um TRACE+TKPROF nas duas execuções pra gente ter uma mensuração mais exata > dos WAITs de rede envolvidos... > > []s > > Chiappa > > -- -- Thanks, * Ricardo Arnoud* *Bacharel em Ciência da Computação* - 2013/1 (51) 8205-4658 TIM / (51) 9259-2333 CLARO / Porto Alegre - RS http://www.ricardoarnoud.com http://www.alterdatabaseopen.com FB http://www.facebook.com/ricardo.arnoud Linkedin http://br.linkedin.com/pub/ricardo-arnoud/15/127/3b1
[oracle_br] Re: Order by
Hmmm... Quando vc fala que executando no servidor roda em segundos e no cliente roda em minutos, vc TEM CERTEZA que está testando MAÇÃ com MAÇÃ, ie : é EXATAMENTE O MESMO SQL , com ** EXATAMENTE O MESMO *** texto, com EXATAMENTE OS MESMOS bindings Basta um mínimo binding diferente para se obter planos diferentes, em alguns casos... Se for MESMO SQLs iguaizinhos até o último detalhee taanto lá no cliente quanto aqui no servidor, qual é o plano de execução ** real ** (ie, não é pedir um EXPLAIN PLAN, mas sim o plano que REALMENTE foi usado, extraído do cache com DBMS_XPLAN.DISPLAY_CURSOR e INCLUINDO as estatísticas de uso do SQL) , tanto lá quanto cá ??? ==> Se forem planos diferentes para RIGOROSAMENTE O MESMO SQL, aí pergunto : as estatísticas do CBO estão OK , as colunas A-ROWS e E-ROWS fazem sentido ?? E a DIFERENÇA das estatísticas de sessão (ie, o resultado datual menos o anterior), é interessante se ccoletar, também ... Se vc não sabe como, http://rwijk.blogspot.com.br/2008/03/dbmsxplandisplaycursor.html dá um overview na obtenção de planos e https://asktom.oracle.com/pls/apex/ASKTOM.download_file?p_file=6551378329289980701 tem um script exemplo de como obter a diferença das stats de sessão... SE os planos forem iguais ou equivalentes E as estats do CBO estiverem bem, vc pode considerar eventualmente setar na sessão o gerenciamento de PGA manual (vc não diz mas MUITO PROVAVELMENTE nesse banco ele deve estar automático) e maanualmente setar uma SORT_AREA_SIZE (e uma HASH_AREA_SIZE, se ffor o caso) anormalmente maiores e medir de novo... Caso nenhuma das linhas de teste/investigação acima resulte, aí a gente chega nas questões de hardware : ocorre que a diferença única entre executar o mesmo SQL no cliente e no servidor é o tráfego de rede obviamente maior no primeiro caso - aí a gente chega no nível de se pedir um TRACE+TKPROF nas duas execuções pra gente ter uma mensuração mais exata dos WAITs de rede envolvidos... []s Chiappa
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
> Caio, > >> > > > > >> > > > Eu preciso de todos os dadoseu faço um loop percorrendo as > >> partições > >> > > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor > >> com > >> > > todos estes dados ordenados... > >> > > > > >> > > > > >> > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > >> > > > DATA_RETIRADA_INICIAL VARCHAR2, > >> > > > DATA_RETIRADA_FINAL VARCHAR2, > >> > > > OUT_SERVICE OUT REF_CURSOR) > >> > > > > >> > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > >> > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, > >> MSISDN > >> > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, > >> BNF_NR > >> > > '; > >> > > > > >> > > > Quando fui realizar o trace deu o seguinte erro: > >> > > > SQL> set autot on > >> > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role > >> is > >> > > enabled > >> > > > SP2-0611: Error enabling STATISTICS report > >> > > > > >> > > > Abs > >> > > > > >> > > > --- Em > >> > > > oracle_br@yahoogrupos.com.br >> 40yahoogrupos.com.br>, > >> > > Caio Spadafora escreveu > >> > > > > > >> > > > > Mauricio, > >> > > > > > >> > > > > Nesse caso, considerando que a lógica utilizada é a unica > >> > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão > >> seria > >> > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, > >> se > >> > > você precisasse de TODOS os registros de nada adiantaria. > >> > > > > > >> > > > > Antes de executar um trace, explique um pouco mais do fluxo de > >> dados. > >> > > > > > >> > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > >> > > ordenados por um determinado conjunto de colunas e depois faz o que > >> com os > >> > > dados? > >> > > > > > >> > > > > Você conhece o conceito de IOT? > >> > > > > > >> > > > > Atenciosamente, > >> > > > > Caio Spadafora. > >> > > > > http://0011brothers.blogspot.com/ > >> > > > > > >> > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > >> > > > > > >> > > > > De: Mauricio Lobão > >> > > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI > >> registro. > >> > > Como fazer ? > >> > > > > Para: > >> > > > > oracle_br@yahoogrupos.com.br >> 40yahoogrupos.com.br> > >> > >> > > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria > >> > > ordenados por este campo... > >> > > > > > >> > > > > > >> > > > > > >> > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > >> > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X > >> ORDER BY > >> > > DATARETIRADA, BNF_NR '; > >> > > > > > >> > > > > > >> > > > > > >> > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > >> > > > > > >> > > > > > >> > > > > > >> > > > > Abs > >> > > > > > >> > > > > > >> > > > > > >> > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > >> >
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
> > > Caio, >> > > > > >> > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as >> > partições >> > > > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor >> > com >> > > > todos estes dados ordenados... >> > > > > >> > > > > >> > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, >> > > > > DATA_RETIRADA_INICIAL VARCHAR2, >> > > > > DATA_RETIRADA_FINAL VARCHAR2, >> > > > > OUT_SERVICE OUT REF_CURSOR) >> > > > > >> > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, >> > > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, >> > MSISDN >> > > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, >> > BNF_NR >> > > > '; >> > > > > >> > > > > Quando fui realizar o trace deu o seguinte erro: >> > > > > SQL> set autot on >> > > > > SP2-0618: Cannot find the Session Identifier. Check >> PLUSTRACE role is >> > > > enabled >> > > > > SP2-0611: Error enabling STATISTICS report >> > > > > >> > > > > Abs >> > > > > >> > > > > --- Em oracle_br@yahoogrupos.com.br >> > > 40yahoogrupos.com.br>, >> > > > Caio Spadafora escreveu >> > > > > > >> > > > > > Mauricio, >> > > > > > >> > > > > > Nesse caso, considerando que a lógica utilizada é a unica >> > > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão >> > seria >> > > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, >> > se >> > > > você precisasse de TODOS os registros de nada adiantaria. >> > > > > > >> > > > > > Antes de executar um trace, explique um pouco mais do fluxo de >> > dados. >> > > > > > >> > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros >> > > > ordenados por um determinado conjunto de colunas e depois faz >> o que com >> > os >> > > > dados? >> > > > > > >> > > > > > Você conhece o conceito de IOT? >> > > > > > >> > > > > > Atenciosamente, >> > > > > > Caio Spadafora. >> > > > > > http://0011brothers.blogspot.com/ >> > > > > > >> > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: >> > > > > > >> > > > > > De: Mauricio Lobão >> > > > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI >> > registro. >> > > > Como fazer ? >> > > > > > Para: >> oracle_br@yahoogrupos.com.br> > 40yahoogrupos.com.br> >> > >> > > > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria >> > > > ordenados por este campo... >> > > > > > >> > > > > > >> > > > > > >> > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD >> > > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM >> X ORDER >> > BY >> > > > DATARETIRADA, BNF_NR '; >> > > > > > >> > > > > > >> > > > > > >> > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . >> > > > > > >> > > > > > >> > > > > > >> > > > > > Abs >> > > > > > >> > > > > > >> > > > > > >> > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa >> > > > escrev
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
gt; > > Quando fui realizar o trace deu o seguinte erro: > > > > > SQL> set autot on > > > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > > > enabled > > > > > SP2-0611: Error enabling STATISTICS report > > > > > > > > > > Abs > > > > > > > > > > --- Em oracle_br@yahoogrupos.com.br > > > > > > 40yahoogrupos.com.br>, > > > > Caio Spadafora escreveu > > > > > > > > > > > > Mauricio, > > > > > > > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > > > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão > > seria > > > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, > > se > > > > você precisasse de TODOS os registros de nada adiantaria. > > > > > > > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de > > dados. > > > > > > > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > > > ordenados por um determinado conjunto de colunas e depois faz o que com > > os > > > > dados? > > > > > > > > > > > > Você conhece o conceito de IOT? > > > > > > > > > > > > Atenciosamente, > > > > > > Caio Spadafora. > > > > > > http://0011brothers.blogspot.com/ > > > > > > > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > > > > > > > De: Mauricio Lobão > > > > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI > > registro. > > > > Como fazer ? > > > > > > Para: > > > > > > oracle_br@yahoogrupos.com.br > 40yahoogrupos.com.br> > > > > > > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria > > > > ordenados por este campo... > > > > > > > > > > > > > > > > > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER > > BY > > > > DATARETIRADA, BNF_NR '; > > > > > > > > > > > > > > > > > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > > > > > > > > > > > > > > > > > > > > > Abs > > > > > > > > > > > > > > > > > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > > > > escreveu > > > > > > > > > > > > > > > > > > > > > > > > > > no sqlplus: > > > > > > > > > > > > > set timing on > > > > > > > > > > > > > set autot on > > > > > > > > > > > > > > > > > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > > > > > > > > > > > > > > > > > set autot traceonly explain > > > > > > > > > > > > > > > > > > > > > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > > > > > > > > > > > > > > > > > > > > > NAO. > > > > > > > > > > > > > > Porque você ordenaria? > > > > > > > > > > > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > > > > > > > > > > > > &g
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
e erro: >> > > > SQL> set autot on >> > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role >> is >> > > enabled >> > > > SP2-0611: Error enabling STATISTICS report >> > > > >> > > > Abs >> > > > >> > > > --- Em >> > > > oracle_br@yahoogrupos.com.br> 40yahoogrupos.com.br>, >> > > Caio Spadafora escreveu >> > > > > >> > > > > Mauricio, >> > > > > >> > > > > Nesse caso, considerando que a lógica utilizada é a unica >> > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão >> seria >> > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, >> se >> > > você precisasse de TODOS os registros de nada adiantaria. >> > > > > >> > > > > Antes de executar um trace, explique um pouco mais do fluxo de >> dados. >> > > > > >> > > > > Você monta essa tabela temporario, busca os 4 milhões de registros >> > > ordenados por um determinado conjunto de colunas e depois faz o que >> com os >> > > dados? >> > > > > >> > > > > Você conhece o conceito de IOT? >> > > > > >> > > > > Atenciosamente, >> > > > > Caio Spadafora. >> > > > > http://0011brothers.blogspot.com/ >> > > > > >> > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: >> > > > > >> > > > > De: Mauricio Lobão >> > > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI >> registro. >> > > Como fazer ? >> > > > > Para: >> > > > > oracle_br@yahoogrupos.com.br> 40yahoogrupos.com.br> >> >> > > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria >> > > ordenados por este campo... >> > > > > >> > > > > >> > > > > >> > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD >> > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X >> ORDER BY >> > > DATARETIRADA, BNF_NR '; >> > > > > >> > > > > >> > > > > >> > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . >> > > > > >> > > > > >> > > > > >> > > > > Abs >> > > > > >> > > > > >> > > > > >> > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa >> > > escreveu >> > > > > >> > > > > > >> > > > > >> > > > > > no sqlplus: >> > > > > >> > > > > > set timing on >> > > > > >> > > > > > set autot on >> > > > > >> > > > > > >> > > > > >> > > > > > para testar i plano sem executar a consulta: >> > > > > >> > > > > > >> > > > > >> > > > > > set autot traceonly explain >> > > > > >> > > > > > >> > > > > >> > > > > > 2009/4/3 Júlio César Corrêa >> > > > > >> > > > > > >> > > > > >> > > > > > > NAO. >> > > > > >> > > > > > > Porque você ordenaria? >> > > > > >> > > > > > > Tem que ter uma justificativa bem elaborada para tal. >> > > > > >> > > > > > > >> > > > > >> > > > > > > Após o seu loop percorrer e tal,e você colocar os seus >> registros em >> > > > > >> > > > > > > memória,o que você faz com estes 4MI de registros? >> > > > > >> > > > &g
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Chiappa, Se o nosso amigo arrancar esta query da aplicação,isso não seria nem tuning.Seria um caso de reescrever a query. Acerto de codigo é tuning ?Em partes sim,pq o codigo pdoe não ser dele. Poderia informar a ele o ganho que ele teria,sem precisar ordenar uma query com 4 MI de registros?O tempo que vai baixar na execução total,pode até mostrar o antes e depois p gerente dele.Vai ganhar um café rs. Metotologia K.I.S.S no SQL ajuda e muito. Abs, 2009/4/4 jlchiappa > Julio, eu também questionaria essa necessidade de ordenar : vejamos, uma > tabela temporária tipicamente é criada para guardar TODOS os registros que a > sessão vai manipular, uma temp via de regra VAI TER QUE SER LIDA do começo > ao fim - ora, já que todos os registros TEM que serem processados, não > importa a ordem física, qual a difereça de processar registros ordenados ou > não ??? Sem ordem ou com ela, no final da rotina não lemos os registros > todos ?? É uma necessidade meio "estranha" ESSA... > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br , > Júlio César Corrêa escreveu > > > > > Estou com o Mr.Caio. > > Mas responde aqui: > > > > Para que ordenar as linhas? > > Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer > para > > ordenar as benditas 4 MI linhas. > > Mesmo que for para arquivo texto e ser importao depois em outro "país" > rs, a > > aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil > > achar alguem que manipulará estes 4 MI ordenados. > > > > Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar > > que não é necessário ordenar nada. > > > > > > 2009/4/3 Elcio > > > > > Mauricio, > > > > > > Voce utiliza essa tabela temporaria exclusivamente para esse > > > processo(query)? > > > > > > Essa tabela possui outras colunas além das que aparecem no codigo > abaixo? > > > > > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra > opção > > > seria incluir as outras colunas que voce utiliza no indice. Detalhe > > > importante que o indice deverá iniciar com as colunas do seu ORDER BY > > > respeitando a ordem. > > > > > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast > > > Full Scan) no indice sem acessar a tabela propriamente dita. > > > > > > Espero que ajude. > > > > > > []´s > > > > > > --- Em oracle_br@yahoogrupos.com.br > > > 40yahoogrupos.com.br>, > > > Mauricio Lobão escreveu > > > > > > > > > > > Caio, > > > > > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as > partições > > > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor > com > > > todos estes dados ordenados... > > > > > > > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > > > DATA_RETIRADA_INICIAL VARCHAR2, > > > > DATA_RETIRADA_FINAL VARCHAR2, > > > > OUT_SERVICE OUT REF_CURSOR) > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, > MSISDN > > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, > BNF_NR > > > '; > > > > > > > > Quando fui realizar o trace deu o seguinte erro: > > > > SQL> set autot on > > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > > enabled > > > > SP2-0611: Error enabling STATISTICS report > > > > > > > > Abs > > > > > > > > --- Em oracle_br@yahoogrupos.com.br > > > > 40yahoogrupos.com.br>, > > > Caio Spadafora escreveu > > > > > > > > > > Mauricio, > > > > > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão > seria > > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, > se > > > você precisasse de TODOS os registros de nada adiantaria. > > > > > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de > dados. > > > > > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > > ordenados por um determinado conjunto de colunas e depois faz o que com > os
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Eu preciso que sejnisam ordenados...pois vou devolver este cursor para uma aplicação que ira gerar o arquivo com um determinado layout..e esta aplicação nao tem um mecanismo que ordene os registros...sei que os usuários nao tem noção no esforço para realizar tao tarefa pelo Oracle...porem podemos pesquisar uma forma que possa atende-lo... Abs --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" escreveu > > Julio, eu também questionaria essa necessidade de ordenar : vejamos, uma > tabela temporária tipicamente é criada para guardar TODOS os registros que a > sessão vai manipular, uma temp via de regra VAI TER QUE SER LIDA do começo ao > fim - ora, já que todos os registros TEM que serem processados, não importa a > ordem física, qual a difereça de processar registros ordenados ou não ??? Sem > ordem ou com ela, no final da rotina não lemos os registros todos ?? É uma > necessidade meio "estranha" ESSA... > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br, Júlio César Corrêa > escreveu > > > > Estou com o Mr.Caio. > > Mas responde aqui: > > > > Para que ordenar as linhas? > > Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer para > > ordenar as benditas 4 MI linhas. > > Mesmo que for para arquivo texto e ser importao depois em outro "país" rs, a > > aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil > > achar alguem que manipulará estes 4 MI ordenados. > > > > Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar > > que não é necessário ordenar nada. > > > > > > 2009/4/3 Elcio > > > > > Mauricio, > > > > > > Voce utiliza essa tabela temporaria exclusivamente para esse > > > processo(query)? > > > > > > Essa tabela possui outras colunas além das que aparecem no codigo abaixo? > > > > > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção > > > seria incluir as outras colunas que voce utiliza no indice. Detalhe > > > importante que o indice deverá iniciar com as colunas do seu ORDER BY > > > respeitando a ordem. > > > > > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast > > > Full Scan) no indice sem acessar a tabela propriamente dita. > > > > > > Espero que ajude. > > > > > > []´s > > > > > > --- Em oracle_br@yahoogrupos.com.br , > > > Mauricio Lobão escreveu > > > > > > > > > > > Caio, > > > > > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições > > > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor com > > > todos estes dados ordenados... > > > > > > > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > > > DATA_RETIRADA_INICIAL VARCHAR2, > > > > DATA_RETIRADA_FINAL VARCHAR2, > > > > OUT_SERVICE OUT REF_CURSOR) > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN > > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR > > > '; > > > > > > > > Quando fui realizar o trace deu o seguinte erro: > > > > SQL> set autot on > > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > > enabled > > > > SP2-0611: Error enabling STATISTICS report > > > > > > > > Abs > > > > > > > > --- Em oracle_br@yahoogrupos.com.br , > > > Caio Spadafora escreveu > > > > > > > > > > Mauricio, > > > > > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão > > > seria > > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se > > > você precisasse de TODOS os registros de nada adiantaria. > > > > > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > > dados? > > > > > > > > > > Você conhece o conceito de IOT? > > > > > > >
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Uma alternativa tambem é brincar com a blocagem. Tente verificar os parametros relacionados a blocagem, sugiro analisar o db_file_multiblock_count. Se quiser entender melhor: http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:499197100346264909 []'s Caio Spadafora. http://0011brothers.blogspot.com/ --- Em sáb, 4/4/09, jlchiappa escreveu: De: jlchiappa Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ? Para: oracle_br@yahoogrupos.com.br Data: Sábado, 4 de Abril de 2009, 18:34 Julio, eu também questionaria essa necessidade de ordenar : vejamos, uma tabela temporária tipicamente é criada para guardar TODOS os registros que a sessão vai manipular, uma temp via de regra VAI TER QUE SER LIDA do começo ao fim - ora, já que todos os registros TEM que serem processados, não importa a ordem física, qual a difereça de processar registros ordenados ou não ??? Sem ordem ou com ela, no final da rotina não lemos os registros todos ?? É uma necessidade meio "estranha" ESSA... []s Chiappa --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa escreveu > > Estou com o Mr.Caio. > Mas responde aqui: > > Para que ordenar as linhas? > Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer para > ordenar as benditas 4 MI linhas. > Mesmo que for para arquivo texto e ser importao depois em outro "país" rs, a > aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil > achar alguem que manipulará estes 4 MI ordenados. > > Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar > que não é necessário ordenar nada. > > > 2009/4/3 Elcio > > > Mauricio, > > > > Voce utiliza essa tabela temporaria exclusivamente para esse > > processo(query) ? > > > > Essa tabela possui outras colunas além das que aparecem no codigo abaixo? > > > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção > > seria incluir as outras colunas que voce utiliza no indice. Detalhe > > importante que o indice deverá iniciar com as colunas do seu ORDER BY > > respeitando a ordem. > > > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast > > Full Scan) no indice sem acessar a tabela propriamente dita. > > > > Espero que ajude. > > > > []´s > > > > --- Em oracle...@yahoogrup os.com.br , > > Mauricio Lobão escreveu > > > > > > > > Caio, > > > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições > > de uma tabela e inserindo nesta temporaria.. .que irá retornar o cursor com > > todos estes dados ordenados... > > > > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > > DATA_RETIRADA_ INICIAL VARCHAR2, > > > DATA_RETIRADA_ FINAL VARCHAR2, > > > OUT_SERVICE OUT REF_CURSOR) > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > > TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN > > FROM ADMINPROV2_10. MED_RETIRADA_ PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR > > '; > > > > > > Quando fui realizar o trace deu o seguinte erro: > > > SQL> set autot on > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > enabled > > > SP2-0611: Error enabling STATISTICS report > > > > > > Abs > > > > > > --- Em oracle...@yahoogrup os.com.br , > > Caio Spadafora escreveu > > > > > > > > Mauricio, > > > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão seria > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se > > você precisasse de TODOS os registros de nada adiantaria. > > > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > > > > > Você conhece o conceito de IOT? > > > > > > > > Atenciosamente, > > > > Caio Spadafora. > > > > http://0011brothers .blogspot. com/ > > > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > > > De: Mauricio Lobão >
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Julio, eu também questionaria essa necessidade de ordenar : vejamos, uma tabela temporária tipicamente é criada para guardar TODOS os registros que a sessão vai manipular, uma temp via de regra VAI TER QUE SER LIDA do começo ao fim - ora, já que todos os registros TEM que serem processados, não importa a ordem física, qual a difereça de processar registros ordenados ou não ??? Sem ordem ou com ela, no final da rotina não lemos os registros todos ?? É uma necessidade meio "estranha" ESSA... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Júlio César Corrêa escreveu > > Estou com o Mr.Caio. > Mas responde aqui: > > Para que ordenar as linhas? > Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer para > ordenar as benditas 4 MI linhas. > Mesmo que for para arquivo texto e ser importao depois em outro "país" rs, a > aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil > achar alguem que manipulará estes 4 MI ordenados. > > Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar > que não é necessário ordenar nada. > > > 2009/4/3 Elcio > > > Mauricio, > > > > Voce utiliza essa tabela temporaria exclusivamente para esse > > processo(query)? > > > > Essa tabela possui outras colunas além das que aparecem no codigo abaixo? > > > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção > > seria incluir as outras colunas que voce utiliza no indice. Detalhe > > importante que o indice deverá iniciar com as colunas do seu ORDER BY > > respeitando a ordem. > > > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast > > Full Scan) no indice sem acessar a tabela propriamente dita. > > > > Espero que ajude. > > > > []´s > > > > --- Em oracle_br@yahoogrupos.com.br , > > Mauricio Lobão escreveu > > > > > > > > Caio, > > > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições > > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor com > > todos estes dados ordenados... > > > > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > > DATA_RETIRADA_INICIAL VARCHAR2, > > > DATA_RETIRADA_FINAL VARCHAR2, > > > OUT_SERVICE OUT REF_CURSOR) > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR > > '; > > > > > > Quando fui realizar o trace deu o seguinte erro: > > > SQL> set autot on > > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > enabled > > > SP2-0611: Error enabling STATISTICS report > > > > > > Abs > > > > > > --- Em oracle_br@yahoogrupos.com.br , > > Caio Spadafora escreveu > > > > > > > > Mauricio, > > > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão seria > > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se > > você precisasse de TODOS os registros de nada adiantaria. > > > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > > > > > Você conhece o conceito de IOT? > > > > > > > > Atenciosamente, > > > > Caio Spadafora. > > > > http://0011brothers.blogspot.com/ > > > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > > > De: Mauricio Lobão > > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. > > Como fazer ? > > > > Para: oracle_br@yahoogrupos.com.br > > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria > > ordenados por este campo... > > > > > > > > > > > > > > > > OPEN OUT_SERVICE FOR
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Olá, Esse é um daqueles casos que um hint vai muito bem. create index xyz on ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP(DATARETIRADA, BNF_NR); SELECT /*+ INDEX(ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP xyz) */ BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP Execute e nos mostre o que vai retornar. Caso retorne fora de ordem, tente alterar os parametros optimizer_index_caching e optimizer_index_cost_adj. Na maioria dos bancos por ae esses valores estao como 0 para o optimizer_index_caching e 100 para o optimizer_index_cost_adj. Tente mudar o optimizer_index_caching para 25 e optimizer_index_cost_adj para 90 (Sugestão do Tom). Mas só faça isso se necessários. Esses valores podem ser definidos por sessão. Boa Sorte Alex Citando Júlio César Corrêa : > Estou com o Mr.Caio. > Mas responde aqui: > > Para que ordenar as linhas? > Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer para > ordenar as benditas 4 MI linhas. > Mesmo que for para arquivo texto e ser importao depois em outro "país" rs, a > aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil > achar alguem que manipulará estes 4 MI ordenados. > > Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar > que não é necessário ordenar nada. > > > 2009/4/3 Elcio > >> Mauricio, >> >> Voce utiliza essa tabela temporaria exclusivamente para esse >> processo(query)? >> >> Essa tabela possui outras colunas além das que aparecem no codigo abaixo? >> >> Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção >> seria incluir as outras colunas que voce utiliza no indice. Detalhe >> importante que o indice deverá iniciar com as colunas do seu ORDER BY >> respeitando a ordem. >> >> Com isso, certificar que no plano de execução esta utilizando FFS (Fast >> Full Scan) no indice sem acessar a tabela propriamente dita. >> >> Espero que ajude. >> >> []´s >> >> --- Em oracle_br@yahoogrupos.com.br , >> Mauricio Lobão escreveu >> >> > >> > Caio, >> > >> > Eu preciso de todos os dadoseu faço um loop percorrendo as partições >> de uma tabela e inserindo nesta temporaria...que irá retornar o cursor com >> todos estes dados ordenados... >> > >> > >> > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, >> > DATA_RETIRADA_INICIAL VARCHAR2, >> > DATA_RETIRADA_FINAL VARCHAR2, >> > OUT_SERVICE OUT REF_CURSOR) >> > >> > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, >> TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN >> FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR >> '; >> > >> > Quando fui realizar o trace deu o seguinte erro: >> > SQL> set autot on >> > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is >> enabled >> > SP2-0611: Error enabling STATISTICS report >> > >> > Abs >> > >> > --- Em oracle_br@yahoogrupos.com.br , >> Caio Spadafora escreveu >> > > >> > > Mauricio, >> > > >> > > Nesse caso, considerando que a lógica utilizada é a unica >> possibilidade, você vai ter que atuar em outras camadas. Uma sugestão seria >> utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se >> você precisasse de TODOS os registros de nada adiantaria. >> > > >> > > Antes de executar um trace, explique um pouco mais do fluxo de dados. >> > > >> > > Você monta essa tabela temporario, busca os 4 milhões de registros >> ordenados por um determinado conjunto de colunas e depois faz o que com os >> dados? >> > > >> > > Você conhece o conceito de IOT? >> > > >> > > Atenciosamente, >> > > Caio Spadafora. >> > > http://0011brothers.blogspot.com/ >> > > >> > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: >> > > >> > > De: Mauricio Lobão >> > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. >> Como fazer ? >> > > Para: oracle_br@yahoogrupos.com.br >> > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > Eu preciso re
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Estou com o Mr.Caio. Mas responde aqui: Para que ordenar as linhas? Por o usuário pediu,não vale.Ele não sabe o que o Oracle tem que fazer para ordenar as benditas 4 MI linhas. Mesmo que for para arquivo texto e ser importao depois em outro "país" rs, a aplicação deveria ordenar os dados.Até pq sei que é dificil e bem dificil achar alguem que manipulará estes 4 MI ordenados. Se vc passar o fluxi de dados,disendo para onde ele vai.Poderemos afirmar que não é necessário ordenar nada. 2009/4/3 Elcio > Mauricio, > > Voce utiliza essa tabela temporaria exclusivamente para esse > processo(query)? > > Essa tabela possui outras colunas além das que aparecem no codigo abaixo? > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção > seria incluir as outras colunas que voce utiliza no indice. Detalhe > importante que o indice deverá iniciar com as colunas do seu ORDER BY > respeitando a ordem. > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast > Full Scan) no indice sem acessar a tabela propriamente dita. > > Espero que ajude. > > []´s > > --- Em oracle_br@yahoogrupos.com.br , > Mauricio Lobão escreveu > > > > > Caio, > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições > de uma tabela e inserindo nesta temporaria...que irá retornar o cursor com > todos estes dados ordenados... > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > DATA_RETIRADA_INICIAL VARCHAR2, > > DATA_RETIRADA_FINAL VARCHAR2, > > OUT_SERVICE OUT REF_CURSOR) > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR > '; > > > > Quando fui realizar o trace deu o seguinte erro: > > SQL> set autot on > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > enabled > > SP2-0611: Error enabling STATISTICS report > > > > Abs > > > > --- Em oracle_br@yahoogrupos.com.br , > Caio Spadafora escreveu > > > > > > Mauricio, > > > > > > Nesse caso, considerando que a lógica utilizada é a unica > possibilidade, você vai ter que atuar em outras camadas. Uma sugestão seria > utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se > você precisasse de TODOS os registros de nada adiantaria. > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > ordenados por um determinado conjunto de colunas e depois faz o que com os > dados? > > > > > > Você conhece o conceito de IOT? > > > > > > Atenciosamente, > > > Caio Spadafora. > > > http://0011brothers.blogspot.com/ > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > De: Mauricio Lobão > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. > Como fazer ? > > > Para: oracle_br@yahoogrupos.com.br > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela temporaria > ordenados por este campo... > > > > > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > DATARETIRADA, BNF_NR '; > > > > > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > > > > > > > > > Abs > > > > > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > escreveu > > > > > > > > > > > > > > no sqlplus: > > > > > > > set timing on > > > > > > > set autot on > > > > > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > > > > > set autot traceonly explain > > > > > > > > > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > > > > > > > > > NAO. > > > > > > > > Porque você ordenaria? > > > &
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Elcio, Essa tabela temporaria é exclusiva para este processo. A tabela só possui estas colunas que estao na query abaixo. Ainda preciso analisar a solução do IOT, precisaria de um exemplo de implementação para entender melhor. Com a inclusão das outras colunas da tabela...eu garanto a ordenação que preciso? Obrigado pela ajuda. []'s --- Em oracle_br@yahoogrupos.com.br, "Elcio" escreveu > > Mauricio, > > Voce utiliza essa tabela temporaria exclusivamente para esse processo(query)? > > Essa tabela possui outras colunas além das que aparecem no codigo abaixo? > > Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção > seria incluir as outras colunas que voce utiliza no indice. Detalhe > importante que o indice deverá iniciar com as colunas do seu ORDER BY > respeitando a ordem. > > Com isso, certificar que no plano de execução esta utilizando FFS (Fast Full > Scan) no indice sem acessar a tabela propriamente dita. > > Espero que ajude. > > []´s > > --- Em oracle_br@yahoogrupos.com.br, Mauricio Lobão escreveu > > > > Caio, > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições de > > uma tabela e inserindo nesta temporaria...que irá retornar o cursor com > > todos estes dados ordenados... > > > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > DATA_RETIRADA_INICIAL VARCHAR2, > > DATA_RETIRADA_FINAL VARCHAR2, > > OUT_SERVICE OUT REF_CURSOR) > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN > > FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR > > '; > > > > Quando fui realizar o trace deu o seguinte erro: > > SQL> set autot on > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is > > enabled > > SP2-0611: Error enabling STATISTICS report > > > > Abs > > > > --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora > > escreveu > > > > > > Mauricio, > > > > > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, > > > você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma > > > tabela particionada pelo campo de data, mas mesmo assim, se você > > > precisasse de TODOS os registros de nada adiantaria. > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > > ordenados por um determinado conjunto de colunas e depois faz o que com > > > os dados? > > > > > > Você conhece o conceito de IOT? > > > > > > Atenciosamente, > > > Caio Spadafora. > > > http://0011brothers.blogspot.com/ > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > De: Mauricio Lobão > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. > > > Como fazer ? > > > Para: oracle_br@yahoogrupos.com.br > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > > > temporaria ordenados por este campo... > > > > > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER > > > BY DATARETIRADA, BNF_NR '; > > > > > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > > > > > > > > > Abs > > > > > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > > ...> escreveu > > > > > > > > > > > > > > no sqlplus: > > > > > > > set timing on > > > > > > > set autot on > > > > > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > > > > > set autot traceonly explain > > > > > > > > > > > >
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Mauricio, Voce utiliza essa tabela temporaria exclusivamente para esse processo(query)? Essa tabela possui outras colunas além das que aparecem no codigo abaixo? Caso a opção do IOT, que Caio comentou, não seja viável, uma outra opção seria incluir as outras colunas que voce utiliza no indice. Detalhe importante que o indice deverá iniciar com as colunas do seu ORDER BY respeitando a ordem. Com isso, certificar que no plano de execução esta utilizando FFS (Fast Full Scan) no indice sem acessar a tabela propriamente dita. Espero que ajude. []´s --- Em oracle_br@yahoogrupos.com.br, Mauricio Lobão escreveu > > Caio, > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições de > uma tabela e inserindo nesta temporaria...que irá retornar o cursor com todos > estes dados ordenados... > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > DATA_RETIRADA_INICIAL VARCHAR2, > DATA_RETIRADA_FINAL VARCHAR2, > OUT_SERVICE OUT REF_CURSOR) > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN FROM > ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; > > Quando fui realizar o trace deu o seguinte erro: > SQL> set autot on > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled > SP2-0611: Error enabling STATISTICS report > > Abs > > --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora escreveu > > > > Mauricio, > > > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, > > você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma > > tabela particionada pelo campo de data, mas mesmo assim, se você precisasse > > de TODOS os registros de nada adiantaria. > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > Você conhece o conceito de IOT? > > > > Atenciosamente, > > Caio Spadafora. > > http://0011brothers.blogspot.com/ > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > De: Mauricio Lobão > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > > fazer ? > > Para: oracle_br@yahoogrupos.com.br > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > > temporaria ordenados por este campo... > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > > DATARETIRADA, BNF_NR '; > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > > > > > Abs > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > ...> escreveu > > > > > > > > > > no sqlplus: > > > > > set timing on > > > > > set autot on > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > set autot traceonly explain > > > > > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > > > > > NAO. > > > > > > Porque você ordenaria? > > > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > > > > > memória,o que você faz com estes 4MI de registros? > > > > > > > > > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de > > > > registros em > > > > > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > > > > > temporária). > > > > > > > > > > > > Você tem um loop que faz o processamento linha a linha ok? > > > > > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > > > > > Bulk e tal ? > > > > > > > > >
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Não retorna erro...apenas demoram horas para que o cursor seja devolvido..devido a ordenação...faço o acompanhamento realizando um count na tabela temporaria...qdo chega em 4 milhoes que a quantidade de dados que existe para o periodo que solicitei e sai do loop...ja fiz o teste com menos registros...e o cursor é devolvido...o tempo para realizar o insert na temporario é menor que o tempo de ordenação Todos os registros pq sao esses que existem para o periodo que solicitei...ordenada pq o usuário solicitou que fosse assim..nesta ordem...rs...Estes dados vao para uma aplicação que recebe este cursor e gera um arquivo texto...não posso gerar o arquivo utilizando outra coisa, ele tem que passar por esta aplicação... Abs --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora escreveu > > Que erro esta retornando quando você faz essa consulta da maneira como você > está fazendo? > > Você pode abrir por que você precisa consultar todos os registros e ainda por > que precisa ser de forma ordenada? A partir desse momento para onde vão esses > dados? (te pergunto isso, pois talvez assim conseguimos entender melhor o > leque de opções que temos para otimizar a consulta, se é que ela precisa ser > otimizada) > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > De: Mauricio Lobão > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > fazer ? > Para: oracle_br@yahoogrupos.com.br > Data: Sexta-feira, 3 de Abril de 2009, 19:38 > > > > > > > > > > > > > Caio, > > > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições de > uma tabela e inserindo nesta temporaria.. .que irá retornar o cursor com > todos estes dados ordenados... > > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > > DATA_RETIRADA_ INICIAL VARCHAR2, > > DATA_RETIRADA_ FINAL VARCHAR2, > > OUT_SERVICE OUT REF_CURSOR) > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM ADMINPROV2_10. > MED_RETIRADA_ PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; > > > > Quando fui realizar o trace deu o seguinte erro: > > SQL> set autot on > > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled > > SP2-0611: Error enabling STATISTICS report > > > > Abs > > > > --- Em oracle...@yahoogrup os.com.br, Caio Spadafora > escreveu > > > > > > Mauricio, > > > > > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, > > você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma > > tabela particionada pelo campo de data, mas mesmo assim, se você precisasse > > de TODOS os registros de nada adiantaria. > > > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > > > Você conhece o conceito de IOT? > > > > > > Atenciosamente, > > > Caio Spadafora. > > > http://0011brothers .blogspot. com/ > > > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > > > De: Mauricio Lobão > > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > > fazer ? > > > Para: oracle...@yahoogrup os.com.br > > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > > temporaria ordenados por este campo... > > > > > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > > DATARETIRADA, BNF_NR '; > > > > > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria.. . .. > > > > > > > > > > > > Abs > > > > > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > ...> escreveu > > &g
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
http://www.oracle.com/technology/products/oracle9i/datasheets/iots/iot_ds.html --- Em sex, 3/4/09, Mauricio Lobão escreveu: De: Mauricio Lobão Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ? Para: oracle_br@yahoogrupos.com.br Data: Sexta-feira, 3 de Abril de 2009, 19:40 Ahh...não conheço o conceito de IOT...tem algum lugar onde possa aprender ? --- Em oracle...@yahoogrup os.com.br, Mauricio Lobão escreveu > > Caio, > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições de > uma tabela e inserindo nesta temporaria.. .que irá retornar o cursor com > todos estes dados ordenados... > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > DATA_RETIRADA_ INICIAL VARCHAR2, > DATA_RETIRADA_ FINAL VARCHAR2, > OUT_SERVICE OUT REF_CURSOR) > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM ADMINPROV2_10. > MED_RETIRADA_ PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; > > Quando fui realizar o trace deu o seguinte erro: > SQL> set autot on > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled > SP2-0611: Error enabling STATISTICS report > > Abs > > --- Em oracle...@yahoogrup os.com.br, Caio Spadafora > escreveu > > > > Mauricio, > > > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, > > você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma > > tabela particionada pelo campo de data, mas mesmo assim, se você precisasse > > de TODOS os registros de nada adiantaria. > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados.. > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > Você conhece o conceito de IOT? > > > > Atenciosamente, > > Caio Spadafora. > > http://0011brothers .blogspot. com/ > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > De: Mauricio Lobão > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > > fazer ? > > Para: oracle...@yahoogrup os.com.br > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > > temporaria ordenados por este campo... > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > > DATARETIRADA, BNF_NR '; > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria.. .. . > > > > > > > > Abs > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > ...> escreveu > > > > > > > > > > no sqlplus: > > > > > set timing on > > > > > set autot on > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > set autot traceonly explain > > > > > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > > > > > NAO. > > > > > > Porque você ordenaria? > > > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > > > > > memória,o que você faz com estes 4MI de registros? > > > > > > > > > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de > > > > registros em > > > > > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > > > > > temporária). > > > > > > > > > > > > Você tem um loop que faz o processamento linha a linha ok? > > > > > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > > > > > Bulk e tal ? > > > > > > > &
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Que erro esta retornando quando você faz essa consulta da maneira como você está fazendo? Você pode abrir por que você precisa consultar todos os registros e ainda por que precisa ser de forma ordenada? A partir desse momento para onde vão esses dados? (te pergunto isso, pois talvez assim conseguimos entender melhor o leque de opções que temos para otimizar a consulta, se é que ela precisa ser otimizada) --- Em sex, 3/4/09, Mauricio Lobão escreveu: De: Mauricio Lobão Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ? Para: oracle_br@yahoogrupos.com.br Data: Sexta-feira, 3 de Abril de 2009, 19:38 Caio, Eu preciso de todos os dadoseu faço um loop percorrendo as partições de uma tabela e inserindo nesta temporaria.. .que irá retornar o cursor com todos estes dados ordenados... PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, DATA_RETIRADA_ INICIAL VARCHAR2, DATA_RETIRADA_ FINAL VARCHAR2, OUT_SERVICE OUT REF_CURSOR) OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM ADMINPROV2_10. MED_RETIRADA_ PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; Quando fui realizar o trace deu o seguinte erro: SQL> set autot on SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled SP2-0611: Error enabling STATISTICS report Abs --- Em oracle...@yahoogrup os.com.br, Caio Spadafora escreveu > > Mauricio, > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, você > vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma tabela > particionada pelo campo de data, mas mesmo assim, se você precisasse de TODOS > os registros de nada adiantaria. > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > Você monta essa tabela temporario, busca os 4 milhões de registros ordenados > por um determinado conjunto de colunas e depois faz o que com os dados? > > Você conhece o conceito de IOT? > > Atenciosamente, > Caio Spadafora. > http://0011brothers .blogspot. com/ > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > De: Mauricio Lobão > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > fazer ? > Para: oracle...@yahoogrup os.com.br > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > temporaria ordenados por este campo... > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > DATARETIRADA, BNF_NR '; > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria.. . .. > > > > Abs > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > escreveu > > > > > > no sqlplus: > > > set timing on > > > set autot on > > > > > > para testar i plano sem executar a consulta: > > > > > > set autot traceonly explain > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > NAO. > > > > Porque você ordenaria? > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > > > memória,o que você faz com estes 4MI de registros? > > > > > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros > > > em > > > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > > > temporária). > > > > > > > > Você tem um loop que faz o processamento linha a linha ok? > > > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > > > Bulk e tal ? > > > > > > > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > > > > internet tem varios exemplos,site da oracle ou a galera do grupo pode > > > ajudar > > > > quando tiver sem um norte. > > > > > > > > http://mportes. blogspot. com/2007/ 03/bulk-collect_ 12.html > > > > > > > > Dependendo do que você faz,poderia usar > > > > 2009/4/3 Mauricio Lobão > > >
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Ahh...não conheço o conceito de IOT...tem algum lugar onde possa aprender ? --- Em oracle_br@yahoogrupos.com.br, Mauricio Lobão escreveu > > Caio, > > Eu preciso de todos os dadoseu faço um loop percorrendo as partições de > uma tabela e inserindo nesta temporaria...que irá retornar o cursor com todos > estes dados ordenados... > > > PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, > DATA_RETIRADA_INICIAL VARCHAR2, > DATA_RETIRADA_FINAL VARCHAR2, > OUT_SERVICE OUT REF_CURSOR) > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, > TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN FROM > ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; > > Quando fui realizar o trace deu o seguinte erro: > SQL> set autot on > SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled > SP2-0611: Error enabling STATISTICS report > > Abs > > --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora escreveu > > > > Mauricio, > > > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, > > você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma > > tabela particionada pelo campo de data, mas mesmo assim, se você precisasse > > de TODOS os registros de nada adiantaria. > > > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > > > Você monta essa tabela temporario, busca os 4 milhões de registros > > ordenados por um determinado conjunto de colunas e depois faz o que com os > > dados? > > > > Você conhece o conceito de IOT? > > > > Atenciosamente, > > Caio Spadafora. > > http://0011brothers.blogspot.com/ > > > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > > > De: Mauricio Lobão > > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > > fazer ? > > Para: oracle_br@yahoogrupos.com.br > > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > > temporaria ordenados por este campo... > > > > > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > > DATARETIRADA, BNF_NR '; > > > > > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > > > > > Abs > > > > > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > ...> escreveu > > > > > > > > > > no sqlplus: > > > > > set timing on > > > > > set autot on > > > > > > > > > > para testar i plano sem executar a consulta: > > > > > > > > > > set autot traceonly explain > > > > > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > > > > > NAO. > > > > > > Porque você ordenaria? > > > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > > > > > memória,o que você faz com estes 4MI de registros? > > > > > > > > > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de > > > > registros em > > > > > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > > > > > temporária). > > > > > > > > > > > > Você tem um loop que faz o processamento linha a linha ok? > > > > > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > > > > > Bulk e tal ? > > > > > > > > > > > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > > > > > > internet tem varios exemplos,site da oracle ou a galera do grupo pode > > > > ajudar > > > > > > quando tiver sem um norte. > > > > > > > > > > > > http://mportes. blogspot. com/2007/ 03/bulk-collect_ 12.html > > > > > > > > > > > &
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Caio, Eu preciso de todos os dadoseu faço um loop percorrendo as partições de uma tabela e inserindo nesta temporaria...que irá retornar o cursor com todos estes dados ordenados... PROCEDURE RETIRADA_PREMIOS( QUEUE_CODE VARCHAR2, DATA_RETIRADA_INICIAL VARCHAR2, DATA_RETIRADA_FINAL VARCHAR2, OUT_SERVICE OUT REF_CURSOR) OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN FROM ADMINPROV2_10.MED_RETIRADA_PREMIOS_TEMP ORDER BY DATARETIRADA, BNF_NR '; Quando fui realizar o trace deu o seguinte erro: SQL> set autot on SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled SP2-0611: Error enabling STATISTICS report Abs --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora escreveu > > Mauricio, > > Nesse caso, considerando que a lógica utilizada é a unica possibilidade, você > vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma tabela > particionada pelo campo de data, mas mesmo assim, se você precisasse de TODOS > os registros de nada adiantaria. > > Antes de executar um trace, explique um pouco mais do fluxo de dados. > > Você monta essa tabela temporario, busca os 4 milhões de registros ordenados > por um determinado conjunto de colunas e depois faz o que com os dados? > > Você conhece o conceito de IOT? > > Atenciosamente, > Caio Spadafora. > http://0011brothers.blogspot.com/ > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > De: Mauricio Lobão > Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como > fazer ? > Para: oracle_br@yahoogrupos.com.br > Data: Sexta-feira, 3 de Abril de 2009, 19:16 > > > > > > > > > > > > > Eu preciso retornar um cursor com esses dados da tabela > temporaria ordenados por este campo... > > > > OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD > A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY > DATARETIRADA, BNF_NR '; > > > > Ja utilizo Bulk para realizar a inserção na tabela temporaria... . > > > > Abs > > > > --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa > escreveu > > > > > > no sqlplus: > > > set timing on > > > set autot on > > > > > > para testar i plano sem executar a consulta: > > > > > > set autot traceonly explain > > > > > > 2009/4/3 Júlio César Corrêa > > > > > > > NAO. > > > > Porque você ordenaria? > > > > Tem que ter uma justificativa bem elaborada para tal. > > > > > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > > > memória,o que você faz com estes 4MI de registros? > > > > > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros > > > em > > > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > > > temporária). > > > > > > > > Você tem um loop que faz o processamento linha a linha ok? > > > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > > > Bulk e tal ? > > > > > > > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > > > > internet tem varios exemplos,site da oracle ou a galera do grupo pode > > > ajudar > > > > quando tiver sem um norte. > > > > > > > > http://mportes. blogspot. com/2007/ 03/bulk-collect_ 12.html > > > > > > > > Dependendo do que você faz,poderia usar > > > > 2009/4/3 Mauricio Lobão > > > > > > > > Pessoal, > > > >> > > > >> To com um problema...to precisando otimizar a performance de uma > > > >> rotina...existe uma query em cima de uma tabela temporaria que possui 4 > > > >> milhoes de registros... a tabela é indexada por estes dois campos > > > >> (DATARETIRADA, BNF_NR) que são utilizados na ordenação. > > > >> > > > >> Minha dúvida...é necessário realizar a ordenação na tabela já que possui > > > >> este indice ? O insert nesta tabela é feito através de um loop que > > >> percorre > > > >> as partições de uma tabela e insere nesta temporaria. > > > >> > > > >> Alguem tem outra solução para este
Re: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Mauricio, Nesse caso, considerando que a lógica utilizada é a unica possibilidade, você vai ter que atuar em outras camadas. Uma sugestão seria utilizar uma tabela particionada pelo campo de data, mas mesmo assim, se você precisasse de TODOS os registros de nada adiantaria. Antes de executar um trace, explique um pouco mais do fluxo de dados. Você monta essa tabela temporario, busca os 4 milhões de registros ordenados por um determinado conjunto de colunas e depois faz o que com os dados? Você conhece o conceito de IOT? Atenciosamente, Caio Spadafora. http://0011brothers.blogspot.com/ --- Em sex, 3/4/09, Mauricio Lobão escreveu: De: Mauricio Lobão Assunto: [oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ? Para: oracle_br@yahoogrupos.com.br Data: Sexta-feira, 3 de Abril de 2009, 19:16 Eu preciso retornar um cursor com esses dados da tabela temporaria ordenados por este campo... OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY DATARETIRADA, BNF_NR '; Ja utilizo Bulk para realizar a inserção na tabela temporaria... . Abs --- Em oracle...@yahoogrup os.com.br, Júlio César Corrêa escreveu > > no sqlplus: > set timing on > set autot on > > para testar i plano sem executar a consulta: > > set autot traceonly explain > > 2009/4/3 Júlio César Corrêa > > > NAO. > > Porque você ordenaria? > > Tem que ter uma justificativa bem elaborada para tal. > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > memória,o que você faz com estes 4MI de registros? > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros em > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > temporária). > > > > Você tem um loop que faz o processamento linha a linha ok? > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > Bulk e tal ? > > > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > > internet tem varios exemplos,site da oracle ou a galera do grupo pode ajudar > > quando tiver sem um norte. > > > > http://mportes. blogspot. com/2007/ 03/bulk-collect_ 12.html > > > > Dependendo do que você faz,poderia usar > > 2009/4/3 Mauricio Lobão > > > > Pessoal, > >> > >> To com um problema...to precisando otimizar a performance de uma > >> rotina...existe uma query em cima de uma tabela temporaria que possui 4 > >> milhoes de registros... a tabela é indexada por estes dois campos > >> (DATARETIRADA, BNF_NR) que são utilizados na ordenação. > >> > >> Minha dúvida...é necessário realizar a ordenação na tabela já que possui > >> este indice ? O insert nesta tabela é feito através de um loop que percorre > >> as partições de uma tabela e insere nesta temporaria. > >> > >> Alguem tem outra solução para este problema ? > >> > >> Indice: > >> CREATE INDEX ON X > >> (DATARETIRADA, BNF_NR) > >> NOLOGGING > >> NOPARALLEL; > >> > >> Query: > >> SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS > >> DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR > >> > >> Agradeço desde já. > >> > >> > >> > > > > > > > > -- > > Júlio César Corrêa > > IS Technologist - Oracle DBA > > http://jccorrea. blogspot. com > > > > "To stay competitive in the tech industry, never stop > > learning. Always be on the lookout for better ways of > > doing things and new technologies. Our industry does > > not reward people who let themselves stagnate" > > –John Hall, Senior Vice President, Oracle University > > > > > > > -- > Júlio César Corrêa > IS Technologist - Oracle DBA > http://jccorrea. blogspot. com > > "To stay competitive in the tech industry, never stop > learning. Always be on the lookout for better ways of > doing things and new technologies. Our industry does > not reward people who let themselves stagnate" > –John Hall, Senior Vice President, Oracle University > > > [As partes desta mensagem que não continham texto foram removidas] > Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Eu preciso retornar um cursor com esses dados da tabela temporaria ordenados por este campo... OPEN OUT_SERVICE FOR 'SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS, MSISDN FROM X ORDER BY DATARETIRADA, BNF_NR '; Ja utilizo Bulk para realizar a inserção na tabela temporaria... Abs --- Em oracle_br@yahoogrupos.com.br, Júlio César Corrêa escreveu > > no sqlplus: > set timing on > set autot on > > para testar i plano sem executar a consulta: > > set autot traceonly explain > > 2009/4/3 Júlio César Corrêa > > > NAO. > > Porque você ordenaria? > > Tem que ter uma justificativa bem elaborada para tal. > > > > Após o seu loop percorrer e tal,e você colocar os seus registros em > > memória,o que você faz com estes 4MI de registros? > > > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros em > > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > > temporária). > > > > Você tem um loop que faz o processamento linha a linha ok? > > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > > Bulk e tal ? > > > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > > internet tem varios exemplos,site da oracle ou a galera do grupo pode ajudar > > quando tiver sem um norte. > > > > http://mportes.blogspot.com/2007/03/bulk-collect_12.html > > > > Dependendo do que você faz,poderia usar > > 2009/4/3 Mauricio Lobão > > > > Pessoal, > >> > >> To com um problema...to precisando otimizar a performance de uma > >> rotina...existe uma query em cima de uma tabela temporaria que possui 4 > >> milhoes de registros...a tabela é indexada por estes dois campos > >> (DATARETIRADA, BNF_NR) que são utilizados na ordenação. > >> > >> Minha dúvida...é necessário realizar a ordenação na tabela já que possui > >> este indice ? O insert nesta tabela é feito através de um loop que percorre > >> as partições de uma tabela e insere nesta temporaria. > >> > >> Alguem tem outra solução para este problema ? > >> > >> Indice: > >> CREATE INDEX ON X > >> (DATARETIRADA, BNF_NR) > >> NOLOGGING > >> NOPARALLEL; > >> > >> Query: > >> SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS > >> DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR > >> > >> Agradeço desde já. > >> > >> > >> > > > > > > > > -- > > Júlio César Corrêa > > IS Technologist - Oracle DBA > > http://jccorrea.blogspot.com > > > > "To stay competitive in the tech industry, never stop > > learning. Always be on the lookout for better ways of > > doing things and new technologies. Our industry does > > not reward people who let themselves stagnate" > > John Hall, Senior Vice President, Oracle University > > > > > > > -- > Júlio César Corrêa > IS Technologist - Oracle DBA > http://jccorrea.blogspot.com > > "To stay competitive in the tech industry, never stop > learning. Always be on the lookout for better ways of > doing things and new technologies. Our industry does > not reward people who let themselves stagnate" > John Hall, Senior Vice President, Oracle University > > > [As partes desta mensagem que não continham texto foram removidas] >
[oracle_br] Re: Order by tabela temporaria com 4 MI registro. Como fazer ?
Caio, Segue o plano de execução: Plan SELECT STATEMENT CHOOSECost: 88,979 Bytes: 335.470.640 Cardinality: 4.193.383 2 SORT ORDER BY Cost: 88,979 Bytes: 335.470.640 Cardinality: 4.193.383 1 TABLE ACCESS FULL TABLE Cost: 10,983 Bytes: 335.470.640 Cardinality: 4.193.383 Não sei como tirar o trace...se puder me ensinar.. Abraços, Mauricio --- Em oracle_br@yahoogrupos.com.br, Caio Spadafora escreveu > > > Mauricio, > > Você consegue nos enviar o plano de execução? Em relação a utilizar o índice > ou não vai depender de algumas coisas, como você faz acesso a todos as linhas > da tabela a utilização do índice pode não ser vantajosa, como são somente > quatro colunas de repente fazendo uso de IOT algum ganho de performance pode > existir mas precisariamos testar. > > Mande o plano de execução, as vezes não teremos muito como otimizar o SQL, > existem hints como /*+ all_rows */ e se você tiver um tempo de FETCH alto > nessa consulta você pode aumentar o array_size do sql*plus (caso você esteja > visualizando esses dados nessa interface)... resumindo, mande o plano de > execução e se possivel o trace dessa consulta... ai talvez fique mais facil > de te ajudar. > > []'s > Caio Spadafora. > http://0011brothers.blogspot.com/ > > --- Em sex, 3/4/09, Mauricio Lobão escreveu: > > De: Mauricio Lobão > Assunto: [oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer > ? > Para: oracle_br@yahoogrupos.com.br > Data: Sexta-feira, 3 de Abril de 2009, 17:53 > > > > > > > > > > > > > Pessoal, > > > > To com um problema...to precisando otimizar a performance de uma > rotinaexiste uma query em cima de uma tabela temporaria que possui 4 > milhoes de registros... a tabela é indexada por estes dois campos > (DATARETIRADA, BNF_NR) que são utilizados na ordenação. > > > > Minha dúvida...é necessário realizar a ordenação na tabela já que possui este > indice ? O insert nesta tabela é feito através de um loop que percorre as > partições de uma tabela e insere nesta temporaria. > > > > Alguem tem outra solução para este problema ? > > > > Indice: > > CREATE INDEX ON X > > (DATARETIRADA, BNF_NR) > > NOLOGGING > > NOPARALLEL; > > > > Query: > > SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS > DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR > > > > Agradeço desde já. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] >
Re: [oracle_br] Re: Order by coluna alfanuméric a
>>> 1 >>> X1 >>> 1X >>> 10 >>> __ >>> >>> [ ] >>> >>> André >>> >>> >>> >>> Em 28/11/07, Roberto Amorim <[EMAIL >>> PROTECTED]> >>> >> escreveu: >> >>>> Só que o campo é cvarchar e tem string. Então retornará invalid number. >>>> Não tem jeito mesmo. Só fazendo uma função como eu disse no outro >>>> >> email. >> >>>> Só que aí a consulta fica se arrastando. >>>> A função percorreria toda a string e caso só houvesse números ela >>>> aplicaria a máscara com o formato, tal como o Chiappa falou. Se >>>> contivesse caracteres não numéricos ela retornaria a própria string, >>>> >> sem >> >>>> mudanças . A função seria apenas para a ordenação. >>>> Roberto >>>> >>>> wilsonteixeira2000 escreveu: >>>> >>>> >>>>> Luiz Ribeiro, boa tarde! >>>>> >>>>> >>>>> Existe um tecnica "POG" para atender este tipo de situação que atende >>>>> muitas vezes. Adicionar caracteres a direita do valor ex: >>>>> >>>>> tabela A: >>>>> Codigo varchar2 (2), >>>>> nome varchar2(10) >>>>> >>>>> select * from a order by codigo >>>>> codigo nome >>>>> 1 teste >>>>> 10 teste 10 >>>>> 2 teste 2 >>>>> >>>>> select * from order by to_char(codigo,'00') >>>>> codigo nome >>>>> 1 teste >>>>> 2 teste 2 >>>>> 10 teste 10 >>>>> >>>>> >>>>> --- Em oracle_br@yahoogrupos.com.br >>>>> , >>>>> >>>>> >>>> "jlchiappa" <[EMAIL PROTECTED]> >>>> >>>> >>>>> escreveu >>>>> >>>>> >>>>> >>>>>> Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte >>>>>> numérica, desprezando os caracteres ? Desprezar as linhas que >>>>>> contenham não-números ? Transformar a porção da string que contém >>>>>> dígitos em número ? E se houver , ou . entre os números, o que fazer >>>>>> ?? Qual é a lógica que vc pretende ? >>>>>> >>>>>> []s >>>>>> >>>>>> Chiappa >>>>>> --- Em oracle_br@yahoogrupos.com.br >>>>>> , >>>>>> >>>>>> >>>> "Luiz Ribeiro" >>>> >>>> >>>>>> escreveu >>>>>> >>>>>> >>>>>> >>>>>>> Valeu pela dica, Chiappa, mas é que esse campo pode conter strings >>>>>>> >>>>>>> >>>>>>> >>>>>> também, não somente números. >>>>>> >>>>>> >>>>>> >>>>>>> Obrigado. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> From: oracle_br@yahoogrupos.com.br >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> [mailto:oracle_br@yahoogrupos.com.br >>>>>> ] >>>>>> >>>>>> >>>> On Behalf Of jlchiappa >>>> >>>> >>>>>>> Sent: quarta-feira, 28 de novembro de 2007 14:46 >>>>>>> To: oracle_br@yahoogrupos.com.br >>>>>>> >>>>>>> Subject: [oracle_br] Re: Order by coluna alfanumérica >>>>>>> >>>>>>> >>>>>>> >>>>>>> Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : >>>>>>> >>>>>>> select nnn from TABELA order by to_char(to_number >>>>>>> >>>>>>> >>>>>>> >>>>> (COLUNA), 'FM009'); >>>>> >>>>> >>>>> >>>>>>>
Re: [oracle_br] Re: Order by coluna alfanumérica
teixeira2000 escreveu: > >> > >>> Luiz Ribeiro, boa tarde! > >>> > >>> > >>> Existe um tecnica "POG" para atender este tipo de situação que atende > >>> muitas vezes. Adicionar caracteres a direita do valor ex: > >>> > >>> tabela A: > >>> Codigo varchar2 (2), > >>> nome varchar2(10) > >>> > >>> select * from a order by codigo > >>> codigo nome > >>> 1 teste > >>> 10 teste 10 > >>> 2 teste 2 > >>> > >>> select * from order by to_char(codigo,'00') > >>> codigo nome > >>> 1 teste > >>> 2 teste 2 > >>> 10 teste 10 > >>> > >>> > >>> --- Em oracle_br@yahoogrupos.com.br > >>> , > >>> > >> "jlchiappa" <[EMAIL PROTECTED]> > >> > >>> escreveu > >>> > >>> > >>>> Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte > >>>> numérica, desprezando os caracteres ? Desprezar as linhas que > >>>> contenham não-números ? Transformar a porção da string que contém > >>>> dígitos em número ? E se houver , ou . entre os números, o que fazer > >>>> ?? Qual é a lógica que vc pretende ? > >>>> > >>>> []s > >>>> > >>>> Chiappa > >>>> --- Em oracle_br@yahoogrupos.com.br > >>>> , > >>>> > >> "Luiz Ribeiro" > >> > >>>> escreveu > >>>> > >>>> > >>>>> Valeu pela dica, Chiappa, mas é que esse campo pode conter strings > >>>>> > >>>>> > >>>> também, não somente números. > >>>> > >>>> > >>>>> Obrigado. > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> From: oracle_br@yahoogrupos.com.br > >>>>> > >>>>> > >>>>> > >>>> [mailto:oracle_br@yahoogrupos.com.br > >>>> ] > >>>> > >> On Behalf Of jlchiappa > >> > >>>>> Sent: quarta-feira, 28 de novembro de 2007 14:46 > >>>>> To: oracle_br@yahoogrupos.com.br > >>>>> > >>>>> Subject: [oracle_br] Re: Order by coluna alfanumérica > >>>>> > >>>>> > >>>>> > >>>>> Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > >>>>> > >>>>> select nnn from TABELA order by to_char(to_number > >>>>> > >>>>> > >>> (COLUNA), 'FM009'); > >>> > >>> > >>>>> ==> mas armazenar números em campos string SÓ PODE DAR n+1 > >>>>> probleminhas, desde performance até administração, recomendaria vc > >>>>> parar IMEDIATAMENTE com essa prática, se minimamente possível... > >>>>> > >>>>> []s > >>>>> > >>>>> Chiappa > >>>>> > >>>>> --- Em oracle_br@yahoogrupos.com.br > >>>>> > >>>>> > >>>>> > >>>> <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" > >>>> > >>>> > >>> > >>> > >>> > >>>>> escreveu > >>>>> > >>>>> > >>>>>> Boa tarde. > >>>>>> > >>>>>> > >>>>>> > >>>>>> Já vi isso na lista, mas não estou conseguindo encontrar. Como > >>>>>> > >>>>>> > >>> fazer > >>> > >>> > >>>>> para que o resultado abaixo, com order by numa coluna varchar2: > >>>>> > >>>>> > >>>>>> SQL> select coluna from tabela order by coluna; > >>>>>> > >>>>>> > >>>>>> > >>>>>> 1 > >>>>>> > >>>>>> -- > >>>>>> > >>>>>> 1 > >>>>>> > >>>>>> 10 > >>>>>> > >>>>>> 2 > >>>>>> > >>>>>> 20 > >>>>>> > >>>>>> 3 > >>>>>> > >>>>>> 30 > >>>>>> > >>>>>> > >>>>>> > >>>>>> Tenha como resultado o seguinte: > >>>>>> > >>>>>> > >>>>>> > >>>>>> SQL> select coluna from tabela order by coluna; > >>>>>> > >>>>>> > >>>>>> > >>>>>> 1 > >>>>>> > >>>>>> -- > >>>>>> > >>>>>> 1 > >>>>>> > >>>>>> 2 > >>>>>> > >>>>>> 3 > >>>>>> > >>>>>> 10 > >>>>>> > >>>>>> 20 > >>>>>> > >>>>>> 30 > >>>>>> > >>>>>> > >>>>>> > >>>>>> Obrigado, > >>>>>> > >>>>>> > >>>>>> > >>>>>> Luiz > >>>>>> > >>>>>> > >>>>>> > >>>>>> [As partes desta mensagem que não continham texto foram > >>>>>> > >>>>>> > >>> removidas] > >>> > >>> > >>>>> > >>>>> > >>>>> [As partes desta mensagem que não continham texto foram removidas] > >>>>> > >>>>> > >>>>> > >>> > >>> > >>> > >>> > >>>> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » > >>>> > >> Procedure » Scripts » Tutoriais acesse: > >> http://www.oraclebr.com.br/codigo/ListaCodigo.php > >> > >>> -- > >>> > >>> > >>>> 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/ > >>> -- > >>> > >>> > >>>> 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] > > > > > > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » > Procedure » Scripts » Tutoriais acesse: > http://www.oraclebr.com.br/codigo/ListaCodigo.php > >> > > -- > > > >> 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/ > > -- > > > >> 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]
[oracle_br] Re: Order by coluna alfanumérica
Tenta aí: SELECT codigo FROM (SELECT '1' codigo FROM DUAL UNION SELECT '1A' FROM DUAL UNION SELECT 'A1' FROM DUAL UNION SELECT '2A' FROM DUAL UNION SELECT 'A2' FROM DUAL UNION SELECT '11A' FROM DUAL UNION SELECT '22A' FROM DUAL UNION SELECT '3A' FROM DUAL UNION SELECT 'A12' FROM DUAL UNION SELECT 'A20' FROM DUAL) ORDER BY DECODE(RTRIM(TRANSLATE(codigo, '0123456789',' ')),'',LPAD (codigo,30,'0'),codigo); --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu > > Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte > numérica, desprezando os caracteres ? Desprezar as linhas que > contenham não-números ? Transformar a porção da string que contém > dígitos em número ? E se houver , ou . entre os números, o que fazer > ?? Qual é a lógica que vc pretende ? > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "Luiz Ribeiro" > escreveu > > > > Valeu pela dica, Chiappa, mas é que esse campo pode conter strings > também, não somente números. > > > > > > > > Obrigado. > > > > > > > > > > > > From: oracle_br@yahoogrupos.com.br > [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa > > Sent: quarta-feira, 28 de novembro de 2007 14:46 > > To: oracle_br@yahoogrupos.com.br > > Subject: [oracle_br] Re: Order by coluna alfanumérica > > > > > > > > Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > > > > select nnn from TABELA order by to_char(to_number (COLUNA), 'FM009'); > > > > ==> mas armazenar números em campos string SÓ PODE DAR n+1 > > probleminhas, desde performance até administração, recomendaria vc > > parar IMEDIATAMENTE com essa prática, se minimamente possível... > > > > []s > > > > Chiappa > > > > --- Em oracle_br@yahoogrupos.com.br > <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" > > escreveu > > > > > > Boa tarde. > > > > > > > > > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer > > para que o resultado abaixo, com order by numa coluna varchar2: > > > > > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > > > > > 1 > > > > > > -- > > > > > > 1 > > > > > > 10 > > > > > > 2 > > > > > > 20 > > > > > > 3 > > > > > > 30 > > > > > > > > > > > > Tenha como resultado o seguinte: > > > > > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > > > > > 1 > > > > > > -- > > > > > > 1 > > > > > > 2 > > > > > > 3 > > > > > > 10 > > > > > > 20 > > > > > > 30 > > > > > > > > > > > > Obrigado, > > > > > > > > > > > > Luiz > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > >
Re: [oracle_br] Re: Order by coluna alfanuméric a
Eu? calmo? Estou tranquilíssimo. Até porque sou um ganhador da Megasena. Tá certo que foi no bolão e minha parte será R$24,00, mas não se pode ter tudo hehehe O problema de alinhar a esquerda é que isso não daria certo com os nomes. considere esse exemplo mais difícil: 1 2 3 10 20 30 MEL MEL ABEL BETO JCLAUDIO 99937 99937 FRANSCISCO Veja como ABEL fica abaixo de MEL. Isso ocorre em virtude de uma ter quatro e a outra 3 posições. Ou seja, a regra que resolve o problema dos números é também aplicada aos nomes e bagunça tudo. Um abraço milionário! Roberto Andre Santos escreveu: > Roberto > > Muita calma nessa hora! rsss > Alguns colegas aqui já mencionaram "alinhar tudo à direita", com a função > LPAD. > Provavelmente isso já resolveria o problema do "1" versus "10"... (se há > caracteres, talvez UPPER também seja necessário). > > Segue um exemplo: > __ > > SQL> CREATE TABLE teste (codigo VARCHAR(5)); > > Tabela criada. > > SQL> INSERT INTO teste VALUES ('1'); > > 1 linha criada. > > SQL> INSERT INTO teste VALUES ('10'); > > 1 linha criada. > > SQL> INSERT INTO teste VALUES ('X1'); > > 1 linha criada. > > SQL> INSERT INTO teste VALUES ('1X'); > > 1 linha criada. > > SQL> SELECT * FROM teste > 2 ORDER BY codigo; > > CODIG > - > X1 > 1 > 1X > 10 > > SQL> SELECT * FROM teste > 2 ORDER BY LPAD(codigo,5); > > CODIG > - > 1 > X1 > 1X > 10 > > SQL> SELECT LPAD(codigo,5) > 2 FROM teste > 3 ORDER BY LPAD(codigo,5); > > LPAD( > - > 1 >X1 >1X >10 > __ > > [ ] > > André > > > > Em 28/11/07, Roberto Amorim <[EMAIL PROTECTED]> escreveu: > >> Só que o campo é cvarchar e tem string. Então retornará invalid number. >> Não tem jeito mesmo. Só fazendo uma função como eu disse no outro email. >> Só que aí a consulta fica se arrastando. >> A função percorreria toda a string e caso só houvesse números ela >> aplicaria a máscara com o formato, tal como o Chiappa falou. Se >> contivesse caracteres não numéricos ela retornaria a própria string, sem >> mudanças . A função seria apenas para a ordenação. >> Roberto >> >> wilsonteixeira2000 escreveu: >> >>> Luiz Ribeiro, boa tarde! >>> >>> >>> Existe um tecnica "POG" para atender este tipo de situação que atende >>> muitas vezes. Adicionar caracteres a direita do valor ex: >>> >>> tabela A: >>> Codigo varchar2 (2), >>> nome varchar2(10) >>> >>> select * from a order by codigo >>> codigo nome >>> 1 teste >>> 10 teste 10 >>> 2 teste 2 >>> >>> select * from order by to_char(codigo,'00') >>> codigo nome >>> 1 teste >>> 2 teste 2 >>> 10 teste 10 >>> >>> >>> --- Em oracle_br@yahoogrupos.com.br , >>> >> "jlchiappa" <[EMAIL PROTECTED]> >> >>> escreveu >>> >>> >>>> Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte >>>> numérica, desprezando os caracteres ? Desprezar as linhas que >>>> contenham não-números ? Transformar a porção da string que contém >>>> dígitos em número ? E se houver , ou . entre os números, o que fazer >>>> ?? Qual é a lógica que vc pretende ? >>>> >>>> []s >>>> >>>> Chiappa >>>> --- Em oracle_br@yahoogrupos.com.br , >>>> >> "Luiz Ribeiro" >> >>>> escreveu >>>> >>>> >>>>> Valeu pela dica, Chiappa, mas é que esse campo pode conter strings >>>>> >>>>> >>>> também, não somente números. >>>> >>>> >>>>> Obrigado. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> From: oracle_br@yahoogrupos.com.br >>>>> >>>>> >>>> [mailto:oracle_br@yahoogrupos.com.br ] >>>> >> On Behalf Of jlchiappa >> >>>>> Sent: quarta-feira,
Re: [oracle_br] Re: Order by coluna alfanumérica
Roberto Muita calma nessa hora! rsss Alguns colegas aqui já mencionaram "alinhar tudo à direita", com a função LPAD. Provavelmente isso já resolveria o problema do "1" versus "10"... (se há caracteres, talvez UPPER também seja necessário). Segue um exemplo: __ SQL> CREATE TABLE teste (codigo VARCHAR(5)); Tabela criada. SQL> INSERT INTO teste VALUES ('1'); 1 linha criada. SQL> INSERT INTO teste VALUES ('10'); 1 linha criada. SQL> INSERT INTO teste VALUES ('X1'); 1 linha criada. SQL> INSERT INTO teste VALUES ('1X'); 1 linha criada. SQL> SELECT * FROM teste 2 ORDER BY codigo; CODIG - X1 1 1X 10 SQL> SELECT * FROM teste 2 ORDER BY LPAD(codigo,5); CODIG - 1 X1 1X 10 SQL> SELECT LPAD(codigo,5) 2 FROM teste 3 ORDER BY LPAD(codigo,5); LPAD( - 1 X1 1X 10 __ [ ] André Em 28/11/07, Roberto Amorim <[EMAIL PROTECTED]> escreveu: > > Só que o campo é cvarchar e tem string. Então retornará invalid number. > Não tem jeito mesmo. Só fazendo uma função como eu disse no outro email. > Só que aí a consulta fica se arrastando. > A função percorreria toda a string e caso só houvesse números ela > aplicaria a máscara com o formato, tal como o Chiappa falou. Se > contivesse caracteres não numéricos ela retornaria a própria string, sem > mudanças . A função seria apenas para a ordenação. > Roberto > > wilsonteixeira2000 escreveu: > > Luiz Ribeiro, boa tarde! > > > > > > Existe um tecnica "POG" para atender este tipo de situação que atende > > muitas vezes. Adicionar caracteres a direita do valor ex: > > > > tabela A: > > Codigo varchar2 (2), > > nome varchar2(10) > > > > select * from a order by codigo > > codigo nome > > 1 teste > > 10 teste 10 > > 2 teste 2 > > > > select * from order by to_char(codigo,'00') > > codigo nome > > 1 teste > > 2 teste 2 > > 10 teste 10 > > > > > > --- Em oracle_br@yahoogrupos.com.br , > "jlchiappa" <[EMAIL PROTECTED]> > > escreveu > > > >> Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte > >> numérica, desprezando os caracteres ? Desprezar as linhas que > >> contenham não-números ? Transformar a porção da string que contém > >> dígitos em número ? E se houver , ou . entre os números, o que fazer > >> ?? Qual é a lógica que vc pretende ? > >> > >> []s > >> > >> Chiappa > >> --- Em oracle_br@yahoogrupos.com.br , > "Luiz Ribeiro" > >> escreveu > >> > >>> Valeu pela dica, Chiappa, mas é que esse campo pode conter strings > >>> > >> também, não somente números. > >> > >>> > >>> > >>> Obrigado. > >>> > >>> > >>> > >>> > >>> > >>> From: oracle_br@yahoogrupos.com.br > >>> > >> [mailto:oracle_br@yahoogrupos.com.br ] > On Behalf Of jlchiappa > >> > >>> Sent: quarta-feira, 28 de novembro de 2007 14:46 > >>> To: oracle_br@yahoogrupos.com.br > >>> Subject: [oracle_br] Re: Order by coluna alfanumérica > >>> > >>> > >>> > >>> Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > >>> > >>> select nnn from TABELA order by to_char(to_number > >>> > > (COLUNA), 'FM009'); > > > >>> ==> mas armazenar números em campos string SÓ PODE DAR n+1 > >>> probleminhas, desde performance até administração, recomendaria vc > >>> parar IMEDIATAMENTE com essa prática, se minimamente possível... > >>> > >>> []s > >>> > >>> Chiappa > >>> > >>> --- Em oracle_br@yahoogrupos.com.br > >>> > >> <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" > >> > > > > > >>> escreveu > >>> > >>>> Boa tarde. > >>>> > >>>> > >>>> > >>>> Já vi isso na lista, mas não estou conseguindo encontrar. Como > >>>> > > fazer > > > >>> para que o resultado abaixo, com order by numa coluna varchar2: > >>> > >>>> > >>>> SQL> select coluna from tabela order by coluna; > >>>> > >>>> > >>&g
Re: [oracle_br] Re: Order by coluna alfanuméric a
Só que o campo é cvarchar e tem string. Então retornará invalid number. Não tem jeito mesmo. Só fazendo uma função como eu disse no outro email. Só que aí a consulta fica se arrastando. A função percorreria toda a string e caso só houvesse números ela aplicaria a máscara com o formato, tal como o Chiappa falou. Se contivesse caracteres não numéricos ela retornaria a própria string, sem mudanças . A função seria apenas para a ordenação. Roberto wilsonteixeira2000 escreveu: > Luiz Ribeiro, boa tarde! > > > Existe um tecnica "POG" para atender este tipo de situação que atende > muitas vezes. Adicionar caracteres a direita do valor ex: > > tabela A: > Codigo varchar2 (2), > nome varchar2(10) > > select * from a order by codigo > codigo nome > 1 teste > 10 teste 10 > 2 teste 2 > > select * from order by to_char(codigo,'00') > codigo nome > 1 teste > 2 teste 2 > 10 teste 10 > > > --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> > escreveu > >> Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte >> numérica, desprezando os caracteres ? Desprezar as linhas que >> contenham não-números ? Transformar a porção da string que contém >> dígitos em número ? E se houver , ou . entre os números, o que fazer >> ?? Qual é a lógica que vc pretende ? >> >> []s >> >> Chiappa >> --- Em oracle_br@yahoogrupos.com.br, "Luiz Ribeiro" >> escreveu >> >>> Valeu pela dica, Chiappa, mas é que esse campo pode conter strings >>> >> também, não somente números. >> >>> >>> >>> Obrigado. >>> >>> >>> >>> >>> >>> From: oracle_br@yahoogrupos.com.br >>> >> [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa >> >>> Sent: quarta-feira, 28 de novembro de 2007 14:46 >>> To: oracle_br@yahoogrupos.com.br >>> Subject: [oracle_br] Re: Order by coluna alfanumérica >>> >>> >>> >>> Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : >>> >>> select nnn from TABELA order by to_char(to_number >>> > (COLUNA), 'FM009'); > >>> ==> mas armazenar números em campos string SÓ PODE DAR n+1 >>> probleminhas, desde performance até administração, recomendaria vc >>> parar IMEDIATAMENTE com essa prática, se minimamente possível... >>> >>> []s >>> >>> Chiappa >>> >>> --- Em oracle_br@yahoogrupos.com.br >>> >> <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" >> > > >>> escreveu >>> >>>> Boa tarde. >>>> >>>> >>>> >>>> Já vi isso na lista, mas não estou conseguindo encontrar. Como >>>> > fazer > >>> para que o resultado abaixo, com order by numa coluna varchar2: >>> >>>> >>>> SQL> select coluna from tabela order by coluna; >>>> >>>> >>>> >>>> 1 >>>> >>>> -- >>>> >>>> 1 >>>> >>>> 10 >>>> >>>> 2 >>>> >>>> 20 >>>> >>>> 3 >>>> >>>> 30 >>>> >>>> >>>> >>>> Tenha como resultado o seguinte: >>>> >>>> >>>> >>>> SQL> select coluna from tabela order by coluna; >>>> >>>> >>>> >>>> 1 >>>> >>>> -- >>>> >>>> 1 >>>> >>>> 2 >>>> >>>> 3 >>>> >>>> 10 >>>> >>>> 20 >>>> >>>> 30 >>>> >>>> >>>> >>>> Obrigado, >>>> >>>> >>>> >>>> Luiz >>>> >>>> >>>> >>>> [As partes desta mensagem que não continham texto foram >>>> > removidas] > >>> >>> >>> >>> >>> [As partes desta mensagem que não continham texto foram removidas] >>> >>> > > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure >> » Scripts » Tutoriais acesse: >> http://www.oraclebr.com.br/codigo/ListaCodigo.php >> > -- > >> 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/ > -- > >> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >> http://www.oraclebr.com.br/ >> > > > Links do Yahoo! Grupos > > > > >
[oracle_br] Re: Order by coluna alfanumérica
Luiz Ribeiro, boa tarde! Existe um tecnica "POG" para atender este tipo de situação que atende muitas vezes. Adicionar caracteres a direita do valor ex: tabela A: Codigo varchar2 (2), nome varchar2(10) select * from a order by codigo codigo nome 1 teste 10 teste 10 2 teste 2 select * from order by to_char(codigo,'00') codigo nome 1 teste 2 teste 2 10 teste 10 --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu > > Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte > numérica, desprezando os caracteres ? Desprezar as linhas que > contenham não-números ? Transformar a porção da string que contém > dígitos em número ? E se houver , ou . entre os números, o que fazer > ?? Qual é a lógica que vc pretende ? > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "Luiz Ribeiro" > escreveu > > > > Valeu pela dica, Chiappa, mas é que esse campo pode conter strings > também, não somente números. > > > > > > > > Obrigado. > > > > > > > > > > > > From: oracle_br@yahoogrupos.com.br > [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa > > Sent: quarta-feira, 28 de novembro de 2007 14:46 > > To: oracle_br@yahoogrupos.com.br > > Subject: [oracle_br] Re: Order by coluna alfanumérica > > > > > > > > Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > > > > select nnn from TABELA order by to_char(to_number (COLUNA), 'FM009'); > > > > ==> mas armazenar números em campos string SÓ PODE DAR n+1 > > probleminhas, desde performance até administração, recomendaria vc > > parar IMEDIATAMENTE com essa prática, se minimamente possível... > > > > []s > > > > Chiappa > > > > --- Em oracle_br@yahoogrupos.com.br > <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" > > escreveu > > > > > > Boa tarde. > > > > > > > > > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer > > para que o resultado abaixo, com order by numa coluna varchar2: > > > > > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > > > > > 1 > > > > > > -- > > > > > > 1 > > > > > > 10 > > > > > > 2 > > > > > > 20 > > > > > > 3 > > > > > > 30 > > > > > > > > > > > > Tenha como resultado o seguinte: > > > > > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > > > > > 1 > > > > > > -- > > > > > > 1 > > > > > > 2 > > > > > > 3 > > > > > > 10 > > > > > > 20 > > > > > > 30 > > > > > > > > > > > > Obrigado, > > > > > > > > > > > > Luiz > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > >
[oracle_br] Re: Order by coluna alfanumérica
Aí fica difícil, nesses casos o que vc quer - ordenar só pela parte numérica, desprezando os caracteres ? Desprezar as linhas que contenham não-números ? Transformar a porção da string que contém dígitos em número ? E se houver , ou . entre os números, o que fazer ?? Qual é a lógica que vc pretende ? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Luiz Ribeiro" <[EMAIL PROTECTED]> escreveu > > Valeu pela dica, Chiappa, mas é que esse campo pode conter strings também, não somente números. > > > > Obrigado. > > > > > > From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa > Sent: quarta-feira, 28 de novembro de 2007 14:46 > To: oracle_br@yahoogrupos.com.br > Subject: [oracle_br] Re: Order by coluna alfanumérica > > > > Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > > select nnn from TABELA order by to_char(to_number(COLUNA), 'FM009'); > > ==> mas armazenar números em campos string SÓ PODE DAR n+1 > probleminhas, desde performance até administração, recomendaria vc > parar IMEDIATAMENTE com essa prática, se minimamente possível... > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" > escreveu > > > > Boa tarde. > > > > > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer > para que o resultado abaixo, com order by numa coluna varchar2: > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > 1 > > > > -- > > > > 1 > > > > 10 > > > > 2 > > > > 20 > > > > 3 > > > > 30 > > > > > > > > Tenha como resultado o seguinte: > > > > > > > > SQL> select coluna from tabela order by coluna; > > > > > > > > 1 > > > > -- > > > > 1 > > > > 2 > > > > 3 > > > > 10 > > > > 20 > > > > 30 > > > > > > > > Obrigado, > > > > > > > > Luiz > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
Re: [oracle_br] Re: Order by coluna alfanuméric a
Dá para fazer, mas iria ficar lento pra daná. Você faria uma função que receberia a string, trataria a string asc por asc e retornaria um valor equivalente que fosse usado para a ordenação Luiz Ribeiro escreveu: > Valeu pela dica, Chiappa, mas é que esse campo pode conter strings também, > não somente números. > > > > Obrigado. > > > > > > From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of > jlchiappa > Sent: quarta-feira, 28 de novembro de 2007 14:46 > To: oracle_br@yahoogrupos.com.br > Subject: [oracle_br] Re: Order by coluna alfanumérica > > > > Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : > > select nnn from TABELA order by to_char(to_number(COLUNA), 'FM009'); > > ==> mas armazenar números em campos string SÓ PODE DAR n+1 > probleminhas, desde performance até administração, recomendaria vc > parar IMEDIATAMENTE com essa prática, se minimamente possível... > > []s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , > "Luiz Ribeiro" <[EMAIL PROTECTED]> > escreveu > >> Boa tarde. >> >> >> >> Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer >> > para que o resultado abaixo, com order by numa coluna varchar2: > >> >> SQL> select coluna from tabela order by coluna; >> >> >> >> 1 >> >> -- >> >> 1 >> >> 10 >> >> 2 >> >> 20 >> >> 3 >> >> 30 >> >> >> >> Tenha como resultado o seguinte: >> >> >> >> SQL> select coluna from tabela order by coluna; >> >> >> >> 1 >> >> -- >> >> 1 >> >> 2 >> >> 3 >> >> 10 >> >> 20 >> >> 30 >> >> >> >> Obrigado, >> >> >> >> Luiz >> >> >> >> [As partes desta mensagem que não continham texto foram removidas] >> >> > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > >> Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure >> » Scripts » Tutoriais acesse: >> http://www.oraclebr.com.br/codigo/ListaCodigo.php >> > -- > >> 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/ > -- > >> O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >> http://www.oraclebr.com.br/ >> > > > Links do Yahoo! Grupos > > > > >
RE: [oracle_br] Re: Order by coluna alfanuméri ca
Se o tamanho maximo da coluna é 3 digitos supondo vc faz assim No seu order by vc coloca LPAD(nome_coluna,3,'0') From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa Sent: quarta-feira, 28 de novembro de 2007 13:46 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Order by coluna alfanumérica Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : select nnn from TABELA order by to_char(to_number(COLUNA), 'FM009'); ==> mas armazenar números em campos string SÓ PODE DAR n+1 probleminhas, desde performance até administração, recomendaria vc parar IMEDIATAMENTE com essa prática, se minimamente possível... []s Chiappa --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" <[EMAIL PROTECTED]> escreveu > > Boa tarde. > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer para que o resultado abaixo, com order by numa coluna varchar2: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 10 > > 2 > > 20 > > 3 > > 30 > > > > Tenha como resultado o seguinte: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 2 > > 3 > > 10 > > 20 > > 30 > > > > Obrigado, > > > > Luiz > > > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Re: Order by coluna alfanuméri ca
Valeu pela dica, Chiappa, mas é que esse campo pode conter strings também, não somente números. Obrigado. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa Sent: quarta-feira, 28 de novembro de 2007 14:46 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Order by coluna alfanumérica Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : select nnn from TABELA order by to_char(to_number(COLUNA), 'FM009'); ==> mas armazenar números em campos string SÓ PODE DAR n+1 probleminhas, desde performance até administração, recomendaria vc parar IMEDIATAMENTE com essa prática, se minimamente possível... []s Chiappa --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , "Luiz Ribeiro" <[EMAIL PROTECTED]> escreveu > > Boa tarde. > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer para que o resultado abaixo, com order by numa coluna varchar2: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 10 > > 2 > > 20 > > 3 > > 30 > > > > Tenha como resultado o seguinte: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 2 > > 3 > > 10 > > 20 > > 30 > > > > Obrigado, > > > > Luiz > > > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Order by coluna alfanumérica
Se o tamanho máximo da coluna é 3 (digamos), vc poderia pedir : select nnn from TABELA order by to_char(to_number(COLUNA), 'FM009'); ==> mas armazenar números em campos string SÓ PODE DAR n+1 probleminhas, desde performance até administração, recomendaria vc parar IMEDIATAMENTE com essa prática, se minimamente possível... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Luiz Ribeiro" <[EMAIL PROTECTED]> escreveu > > Boa tarde. > > > > Já vi isso na lista, mas não estou conseguindo encontrar. Como fazer para que o resultado abaixo, com order by numa coluna varchar2: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 10 > > 2 > > 20 > > 3 > > 30 > > > > Tenha como resultado o seguinte: > > > > SQL> select coluna from tabela order by coluna; > > > > 1 > > -- > > 1 > > 2 > > 3 > > 10 > > 20 > > 30 > > > > Obrigado, > > > > Luiz > > > > [As partes desta mensagem que não continham texto foram removidas] >
[oracle_br] Re: Order by
O problema está no ");" e a falta do alias Retira o ) e coloca o alias e roda de novo. Vai ficar assim: SELECT BIDBD220_OFAG.AX_OAAGNR FROM BIDBD220_OFAG BIDBD220_OFAG <= WHERE BIDBD220_OFAG.AX_OAAUNR = NUMERO AND BIDBD220_OFAG.AX_OAAGNR > OPERACAO AND ROWNUM = 1 ORDER BY BIDBD220_OFAG.AX_OAAGNR; <= abs Christian --- Em oracle_br@yahoogrupos.com.br, "earodrig2003" <[EMAIL PROTECTED]> escreveu > > Pessoal, nao consigo fazer funcionar. Alguem tem alguma ideia? > > SELECT BIDBD220_OFAG.AX_OAAGNR FROM BIDBD220_OFAG WHERE > BIDBD220_OFAG.AX_OAAUNR = NUMERO > AND BIDBD220_OFAG.AX_OAAGNR > OPERACAO AND ROWNUM = 1 ORDER BY > BIDBD220_OFAG.AX_OAAGNR); > > Grato > []´s Eduardo >
[oracle_br] Re: Order by
Eduardo, imagino que você queira ordenar o seu select e, no final, trazer só a primeira linha, cert? Tipo a opção 'top' de algumas tools/linguagens... Se for isso, altere o seu comando conforme abaixo: select * from ( SELECT BIDBD220_OFAG.AX_OAAGNR FROM BIDBD220_OFAG WHERE BIDBD220_OFAG.AX_OAAUNR = NUMERO AND BIDBD220_OFAG.AX_OAAGNR > OPERACAO ORDER BY BIDBD220_OFAG.AX_OAAGNR ) where ROWNUM = 1; Espero que seja isso. Anderson. --- Em oracle_br@yahoogrupos.com.br, "earodrig2003" <[EMAIL PROTECTED]> escreveu > > Pessoal, nao consigo fazer funcionar. Alguem tem alguma ideia? > > SELECT BIDBD220_OFAG.AX_OAAGNR FROM BIDBD220_OFAG WHERE > BIDBD220_OFAG.AX_OAAUNR = NUMERO > AND BIDBD220_OFAG.AX_OAAGNR > OPERACAO AND ROWNUM = 1 ORDER BY > BIDBD220_OFAG.AX_OAAGNR); > > Grato > []´s Eduardo >
[oracle_br] Re: Order by
Bom dia Eduardo Sua SELECT retorna somente uma Linha, em virtude do ROWNUM, o ORDER BY não tem o q ordenar. Qual a finalidade de sua Select ? O que era esperado de Retorno ? Se vc expor esses detalhes talvez fique mais facil te ajudar. Cassio Frigo
[oracle_br] Re: order by base table (lagassi)
Marcos, eu já tinha respondido detalhadamente em outra msg, mas pelo jeito vc não a recebeu, vamos ve se consigo te ajudar : repetindo o texto da outra msg, a ordenação do Forms nativa é feita PELO BANCO, portanto vc pode tranquilamente ordenar pela info não-base table DESDE QUE seja possível ** AO BANCO ** ecuperar a informação, ok ? Exemplo, Forms 6i C/S com banco 8i : a) pra efeito de demonstração, crio um Forms bem simples, um só bloco na tabela EMP do usuário SCOTT (o usuário-padrão de demos no 8i), com os campos EMPNO, ENAME, DEPTO e SAL b) manualmente crio um campo não-base table chamado NOME_DEPTO, a informação dele (que será o nome de departamento) É POSSÌVEL de ser recuperada no banco só com as colunas da tabela base-table EMP, então poderei ordenar c) crio ** NO BANCO ** - não é no Forms !! - a seguinte função : FUNCTION BUSCA_NOME_DEPTO (P_DEPTO number) RETURN VARCHAR2 IS v_nome_depto varchar2(80); BEGIN select dname into v_nome_depto from dept where deptno=P_DEPTO; return v_nome_depto; END; d) seja depois duma query, seja quando o item base table DEPTNO for alterado manualmente, quero buscar a descrição, assim crio a nível do campo DEPTNO uma trigger POST-CHANGE com o seguinte código : -- trigger POST-CHANGE :NOME_DEPTO := BUSCA_NOME_DEPTO(:DEPTNO); e pronto, a info será buscada. Usar a trigger POST-CHANGE (que funciona em ambos os casos) é ao invés da POST-QUERY (que só funciona pra queries) é técnica-padrão no Forms, mas não sei por que cargas dágua quando dava treinamento de Forms quase ** nenhum ** dos meus alunos a tinha usado antes :/ e) finalmente : como já tinha dito em msg anterior , o que o Forms faz é montar um SQL com o nome dos campos, e adiconar o que estiver nas propriedades de WHERE e de ORDER BY - na situação-exemplo até agora, o SQL que seria montado e enviado seria : SELECT ROWID,EMPNO,ENAME,SAL,DEPTNO FROM EMP até aqui, tamos seguros ??? Muito bem, no seu caso provavelmente ERRADAMENTE vc tascou na propriedade ORDER BY o texto : :nomedobloco.nomedocamponãobasetable assim sendo o SQL enviado pro banco foi : SELECT ROWID,EMPNO,ENAME,SAL,DEPTNO FROM EMP ORDER BY :nomedobloco.nomedocamponãobasetable ==> eu PERGUNTO, isso é valido pro banco, o banco SABE o que é esse tal :nomedobloco.nomedocamponãobasetable pra odrenar por ele ?? Eu mesmo respondo, È CLARO QUE NÃO, esse :nomedobloco.nomedocamponãobasetable é algo que reside LÁ no Forms !!! Pra obter o efeito desejado, na propriedade OPRDER BY vc deve colocar : BUSCA_NOME_DEPTO(DEPTNO) vamos ver o SQL que será montado e enviado pro banco com esse cara : SELECT ROWID,EMPNO,ENAME,SAL,DEPTNO FROM EMP order by BUSCA_NOME_DEPTO(DEPTNO) ==> eu pergunto, o banco SABE o que é esse BUSCA_NOME_DEPTO ??? SIM !!! Sabe o que é esse DEPTNO ? SIM, é uma COLUNA da tabela! Portanto ele PODERÁ ordenar por isso, o Forms IRÁ receber os regs ordenados... Feita a fofoca, obtido o efeito, capicce ? []s Chiappa === Participe do ENPO - Encontro de Profissionais Oracle 2006 ! Informações e inscrições em www.enpo-br.org José Laurindo Chiappa, Palestrante ENPO-2006 === --- Em oracle_br@yahoogrupos.com.br, "Marcos Giovani Lagassi" <[EMAIL PROTECTED]> escreveu > > vou > tentar expor o problema. > isso sera um exemplo. > tabela x com os atributos: codigo, valores > criei um forms base table da tabela x e no post-query fiz um select > que traz a descrição desse código, pois bem, ai vem o meu problema > quero um order by pela descrição. > Amigos, eu sei que por esse exemplo basta eu criar uma view que me > atenderá, mas esse é apenas um exemplo para exemplificar o meu > problema. Pois a aplicação que esta rodando para eu altera-la da > forma que muitos amigos já me enviaram como dica é de grande > trabalho a minha alteração, gostaria de saber se alguem tem alguma > função. > Eu até fiz uma função de banco, mas quando eu informo na minha > função por exemplo odenar(item-que não é da tabela) da erro. > > Sistema Operacional XP > Oracle 8i > forms 6i > -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/or
[oracle_br] Re: order by no base table
ok, amigo e qual seria esse id, seria o nome do item, pois, vou tentar expor o problema. isso sera um exemplo. tabela x com os atributos: codigo, valores criei um forms base table da tabela x e no post-query fiz um select que traz a descrição desse código, pois bem, ai vem o meu problema quero um order by pela descrição. Amigos, eu sei que por esse exemplo basta eu criar uma view que me atenderá, mas esse é apenas um exemplo para exemplificar o meu problema. Pois a aplicação que esta rodando para eu altera-la da forma que muitos amigos já me enviaram como dica é de grande trabalho a minha alteração, gostaria de saber se alguem tem alguma função. Eu até fiz uma função de banco, mas quando eu informo na minha função por exemplo odenar(item-que não é da tabela) da erro. Sistema Operacional XP Oracle 8i forms 6i --- Em oracle_br@yahoogrupos.com.br, "Zilmar - ig" <[EMAIL PROTECTED]> escreveu > > Colega, > > Você pode criar uma função no banco que, passado o id do registro como parâmetro, retorne a descrição desejada. > Então você coloca essa função no order by do bloco e pronto ... > > Abs > - Original Message - > From: Marcos Giovani Lagassi > To: oracle_br@yahoogrupos.com.br > Sent: Tuesday, October 03, 2006 2:44 PM > Subject: [oracle_br] order by no base table > > > Pessoal, tenho um forms (base table) que traz informações de uma > tabela, e o usuário quer que se faça um order by por um item do bloco > que não é base table. > Alguem tem uma solução para esse problema, já pesquisei em vários > lugares mas não encontrei. > [ ]s > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] Re: order by no base table
Colega, seguinte : rotinas de ordenação eficientes e próprias são geralmente bem chatas e complexas de se escrever, é muito melhor deixar o prpoprio banco fazer a ordenação se possível, ie, se a tal "info não-base table" pode ser calculada/encontrada pelo banco (afora o fato que o servidor de banco normalmente tem um hardware MUUUITO mais poderoso à disposição do que o coitado do pc cliente onde o Forms roda, pensando em client/server). Muito bem, com isso em mente : o que o Forms faz é montar um SQL que será enviado pro banco consultando o nome da base-table, o nome dos campos base-table, etc, a propriedade ORDER BY simplesmente indica uma string que será APENDADA ao SQL gerado, confere ? Sendo assim, uma possibilidade é vc escrever no banco (atenção, ** não no Forms, mas NO BANCO, que é onde os SQLs rodam!!) uma função X que retorna o valor desejado. Por exemplo, se o tal campo não-base é , digamos, uma descrição que é encontrada numa tabela de lookup, a função de banco seria algo tipo : FUNCTION BUSCA_DESCR(P_CODIGO number) is v_descr varchar2(nnn); BEGIN select descriçãoabuscar into v_descr from tabeladelookup where codigo=P_CODIGO; return v_descr; END; e daí a propriedade ORDER BY será BUSCA_DESCR (:nomedobloco.nomedoitemdecódigo); ok ? Outras possibilidades existem (como tabela GTT populada por trigger pre-query ou coisa do tipo, ou ter-se uma VIEW que já traz o tal valor não-base table preenchido e fazer o Forms se basear nessa view, e algumas variações dos temas acima citados, estuda aí qual se encaixa no que vc quer, em caso de dificuldades manda aí pra lista uma msg com : VERSÃO do Forms no caso, ambiente - se C/S ou Web -, um scriptzinho com versões MÍNIMAS das tabelas envolvidas, diz que lógica está nesse campo não-base table, de onde ele vem e é formado, que a gente pode tentar te ajudar + ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Marcos Giovani Lagassi" <[EMAIL PROTECTED]> escreveu > > Pessoal, tenho um forms (base table) que traz informações de uma > tabela, e o usuário quer que se faça um order by por um item do bloco > que não é base table. > Alguem tem uma solução para esse problema, já pesquisei em vários > lugares mas não encontrei. > [ ]s > -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html