Olá Marcio, Eu ainda não fui no site para ler mas vou ler sim. Acho que com mais um ano frequentando os comentário de vocês acabarei entendendo como o CBO "pensa". Na época que eu trabalhava direto com o SQLServer achava que o plano gerado era mais natural
Vejo que vocês utilizam sempre o banco em CHOOSE, eu utilizando em RULE estou na contramão? Tenho minhas dúvidas, pois analisando diversas queries, vendo o que elas faziam e adequando índices, rodando estatístiscas (não da forma que vocês fazem, eu simplesmente entrava no DBA Studio e mandava fazer um ANALISE nos SCHEMAS - tinha um job para isto (nossos bancos são pequenos e posso me dar o luxo de fazer isto à noite). Muitas das vezes eu tinha que colocar o hint para usar RULE nas queries para melhorá-las, e olha que melhorava um absurdo! Muitas das vezes percebia que o banco gerava planos completamente diferentes, daí ter mudado para RULE. Para terminar... este coment é OFF... Pô cara, acabei de fazer 48 anos, pelo seu blog você é bem mais novo! Tô nesta práia desde os 16 anos quando entrando no 1° ano do segundo grau me apaixonei por um tal de COMPUTADOR que me obedeceu só que não o vía nunca (IBM 360 - COBOL). Aquelas coisas de: fluxograma, folha de codificação, perfurar cartão, ler listagem, encontrar erros, etc. Caraca que cheiro de naftalina!!! Abraços, Fabão. Em 25/11/05, Marcio Portes<[EMAIL PROTECTED]> escreveu: > --- Em oracle_br@yahoogrupos.com.br, falmeida <[EMAIL PROTECTED]> escreveu > > Olá Marcio, > > > > Entendi em parte. Imaginei que estava usando 10% por isto, mas > fiquei > > preocupado se iria prejudicar a análise. Legal! > > > > É claro que em determinados exemplos o melhor é o particionamento, > mas > > o que eu estou discutindo é que no exemplo que eu dei, eu teria > > 1.000.000 de torcedores divididos por 100 times, da seguinte forma. > O > > time 50 teria 10 torcedores e os demais com o restante dividido > > aproximadamente em partes iguais. Quando você pesquisa uma dada > chave > > em uma árvore esta pesquisa é extremamente eficiente. Como os dados > > estão ordenados nela, quando você chega ao bloco folha onde aparece > o > > primeiro registro com a chave procurada, basta você ler > > sequencialmente a direita os blocos. > > Olha até onde eu sei a busca não é assim não. Ela é randômica. > > >Estou falando em árvore > > balanceada, não em árvore binária onde temos que ficar subindo e > > descendo. Logo, imagine que teríamos que varrer estes blocos folhas > de > > índice a direita e para cada entrada fazer um acesso via rowid nos > > blocos de dados. Estamos falando em eliminar 90% da tabela e não > 25%. > > Ok, o otimizador trabalha mediante esforço. Se o custo para trazer > 10% de registros pelo índice é maior que fts, ele vai por fts. Se > estiver errado é porque algo nas estatísticas está errado. Por isso a > necessidade de entender bem o que conta no momento da elaboração do > custo. Não sei se teve oportunidade de ler o link na asktom, lá > inclusive ele faz os cálculos da leitura randômica contra a > sequencial massiva. Tem alguns parâmetros que ajudam ao CBO tomar > decisão de ir por índice. Por exemplo: optimizer_index_caching, > optimizer_index_cost_adj e db_file_multiblock_read_count para começar. > > > > E mais, a partir do momento que o bloco é lido a próxima leitura > > provavelmente será feita no buffer e não em disco (claro que isto > > dependerá dos parâmetros). Mesmo assim, sou do tempo que a gente > media > > as coisas. Não falo em termos de olhar o resultado da query em > termos > > de custo ou outros resultados, pois estes número são dados através > de > > um modelo matemático, mas falo em criar os dados e medir com o > velho e > > bom relógio. > > hhehe - acho que temos a mesma idade ;) > > > > Sem é claro deixar com que a aplicação fique exibindo no > > vídeo, pois isto acaba também interferindo no tempo de resposta. Vou > > além, se os dados estiverem ordenados nos blocos de dados, ai a > coisa > > ficaria mais ainda ao meu favor, pois na maioria das vezes, > produzimos > > relatórios onde lemos uma parte dos dados em sequencia. Relação de > > funcionários. Telefones e suas respectivas chamadas etc. > > Concordo! A sequencia dos dados no storage é fator significativo na > tomada de decisão do otimizador e essa informação está disponível na > *_indexes: clustering_factor. > Quanto mais próximo do número de blocos - blocks (mais ordenado) > Quanto mais próximo do número de linhas - num_rows (mais desordenado) > > Abraços, > > > > > Fico por aqui, > > > > Abraços, > > > > Fabão > > > > Em 25/11/05, Marcio Portes<[EMAIL PROTECTED]> escreveu: > > > > > > Não tem que pedir desculpas de nada, a idéia em um forum é o > debate e > > > ninguem é dono da verdade. É assim que aprendemos mais a cada nova > > > discussão. > > > > > > Ele sõ usou na segunda query, porque é mais barato. Ele sabe que > > > através do índice, ele encontrará poucos registros em relação a > > > tabela toda. > > > > > > No exemplo a proporção do índice era de 25% da tabela, portanto um > > > fts é mais barato. > > > > > > hehehe, permita-me discordar. Se eu tenho uma tabela de 100 > milhões > > > eu vou considerar o particionamento, daí sim FPS (Full Partition > > > Scan) de 1 milhão de registros. > > > > > > > > > Então, mas quando voce chega no leaf block 1, temos não só um > rowid, > > > temos vários. Em uma leitura de 25% do cotingente da tabela, > quantas > > > vezes acha que vai ler esse mesmo bloco? > > > Tem um monte de explicação disso na asktom. uma delas é > > > http://asktom.oracle.com/pls/ask/f? > > > p=4950:8:::::F4950_P8_DISPLAYID:4433887271030 > > > > > > Acho que voce muda de idéia com a versão 10gr2. Ela está ótima > > > (quanto a configuração default). Mas em minha opinião é o voce > disse, > > > precisa entender o que acontece com o CBO para poder usar > > > corretamente. O novo livro do Jonathan Lewis *dizem* está > > > espetacular, não tem o que ele não explique. > > > > > > > > > --- Em oracle_br@yahoogrupos.com.br, falmeida <[EMAIL PROTECTED]> > escreveu > > > > Olá Márcio, > > > > > > > > Antes de mais nada, peço desculpas por te torrar a paciência. > > > > > > > > Realmente me referia ao artigo de ontem - Histograma. E faço > alguns > > > > comensários, a seguir. > > > > > > > > Acho isto no Oracle muito "doido". Eu fiquei desconfiado que > quando > > > > você executasse já utilizando o histograma os selects: > > > > SQL> select * from t where x_hist = 2; > > > > ou > > > > SQL> select * from t where x_hist = 5; > > > > utilizariam o índice. Só usou na segunda query. . > > > > > > > > Depois, com a criação do bitmap index o resultado foi FTS nas > duas > > > daí > > > > quando você força o índice, o custo da que ele fez full e menor > da > > > que > > > > ele usou índice. > > > > > > > > Acho isto incongruente, pois imagine se você tivesse não 10 > times, > > > mas > > > > sim 100 times, e em cada um tivesse 1.000.000 e em um deles > apenas 5 > > > > torcedores. Ora, se eu estivesse acessando um dos times que tem > > > > 1.000.000 de torcedores, mesmo com o custo de ir no indice e > depois > > > na > > > > tabela seria melhor do que percorrer os praticamente 100.000.000 > > > > registros da tabela. Se colocassemos um indice do tipo arvore > > > > balanceada sobre o campo em questão, ele deveria encontrar > > > rapidamente > > > > pelo ponteiro vertical onde iniciava o primeiro bloco onde a > chave > > > > procurada se encontrava e a partir daí percorreria todos os > blocos a > > > > direita desta árvore até não mais encontrar registros para chave > > > > procurada. Para cada registro encontrado nesta pesquisa, ele > deveria > > > > acessar via rowid a linha na tabela. Vale lembrar que quando > > > > computamos a estatistica conseguimos ver a profundidade da > árvore do > > > > índice. > > > > Em um DISCO IDE com tempo de acesso médio de 8ms, e uma árvore > > > > gigantesca com profundidade de 6 (eu particularmente eu nunca vi > > > > nenhum índice com esta profundidade) observaremos que ele iria > > > > encontrar o primeiro elemento e 7*8 = 56ms (7 por que temos que > > > > acessar um bloco raiz). A partir daí é só percorrer blocos a > > > direita. > > > > Isto é extremamente rápido. Depois para cada registro > encontrado ir > > > no > > > > bloco apontado pelo rowid. Lembro também que num bloco de índice > > > cabem > > > > inúmeras entradas (ponteiros) e que num bloco de dados vários > > > > registros. Concluindo, poderiamos aqui fazer uma estimativa de > > > quantas > > > > entradas caberiam nos blocos de índices e depois quantas linhas > > > > caberiam em um bloco de dados, mas acho que o plano de execução > é > > > > muito ruim nestes casos. Não consigo entender o que o > programador da > > > > Oracle estava pensando quando decidiu fazer o banco trabalhar > desta > > > > forma. Critico sim, pois trabalhei a vida toda com um > SO/Linguagem > > > > chamado MUMPS (hoje tem seu sucessor Caché - que é um banco da > > > geração > > > > pós-relacional) que era super eficiente em termos de busca em > > > árvore. > > > > Hoje concluo que a opção choose como padrão a pior escolha, > pois o > > > > critério que o Oracle escolhe, na minha opinião, é muito > > > > "preconceituoso", duvidoso e não intuitivo. Hoje, eu deixo o > banco > > > em > > > > RULE e analiso o tempo de resposta, e não um suposto custo que > eu > > > não > > > > compreendo a lógica de sua apuração. > > > > > > > > Cabe um esclarecimento aqui. Minhas palavras não são para > agredir, > > > > ofender, nem denegrir, ninguém, nem ao produto com o qual venho > > > > trabalhando e é o meu "ganha pão". Só queria .... > entender..... :-p > > > > > > > > Cordialmente e abraços a todos por me aturar e chegar até aqui, > > > > > > > > Fabão. > > > > > > > > Em 24/11/05, Marcio Portes<[EMAIL PROTECTED]> escreveu: > > > > > Fabão, acredito que voce esteja falando sobre o artigo de > ontem > > > > > (Histograma - introdução). > > > > > > > > > > 1) A query que tem um monte de registro vai por FTS. Achei que > > > tinha > > > > > ficado claro quando executei a primeira query com x_hist = 5 > > > (sem > > > > > histogramas corretos) que fez full table scan. Mesmo assim > aqui > > > > > está o resultado do autotrace traceonly. > > > > > > > > > > SQL> select * from t where x_hist = 2; > > > > > > > > > > > > > > > 1835197 rows selected. > > > > > > > > > > > > > > > Execution Plan > > > > > ---------------------------------------------------------- > > > > > 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2986 > Card=1834400 > > > > > Bytes=45860000) > > > > > 1 0 TABLE ACCESS (FULL) OF 'T' (Cost=2986 Card=1834400 > > > > > Bytes=45860000) > > > > > > > > > > > > > > > > > > > > > > > > > Statistics > > > > > ---------------------------------------------------------- > > > > > 0 recursive calls > > > > > 0 db block gets > > > > > 49556 consistent gets > > > > > 31045 physical reads > > > > > 360 redo size > > > > > 54405784 bytes sent via SQL*Net to client > > > > > 202512 bytes received via SQL*Net from client > > > > > 18353 SQL*Net roundtrips to/from client > > > > > 0 sorts (memory) > > > > > 0 sorts (disk) > > > > > 1835197 rows processed > > > > > > > > > > SQL> select * from t where x_hist = 5; > > > > > > > > > > 10 rows selected. > > > > > > > > > > > > > > > Execution Plan > > > > > ---------------------------------------------------------- > > > > > 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=1 > > > Bytes=25) > > > > > 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'T' (Cost=4 Card=1 > > > > > Bytes=25) > > > > > 2 1 INDEX (RANGE SCAN) OF 'T_IDX' (NON-UNIQUE) > (Cost=3 > > > > > Card=1) > > > > > > > > > > > > > > > > > > > > > > > > > Statistics > > > > > ---------------------------------------------------------- > > > > > 0 recursive calls > > > > > 0 db block gets > > > > > 6 consistent gets > > > > > 0 physical reads > > > > > 0 redo size > > > > > 920 bytes sent via SQL*Net to client > > > > > 651 bytes received via SQL*Net from client > > > > > 2 SQL*Net roundtrips to/from client > > > > > 0 sorts (memory) > > > > > 0 sorts (disk) > > > > > 10 rows processed > > > > > > > > > > > > > > > > > > > > 2) Baixa seletividade não é o único argumento para criação de > > > bitmap > > > > > index. Já imaginou se mesmo com baixa seletividade, o > sistema > > > > > sofre intensa manutenção? Pra onde vai sua performance? Mas > sim, > > > > > seria uma alternativa (desde que bem avaliada em seus > efeitos > > > > > colaterais). no artigo de hoje eu ressalto isso: > > > > > > > > > > Pedaço do artigo em > > > > > <http://mportes.blogspot.com/2005/11/histograma-definio- > size.html> > > > > > E agora, quando usar histogramas? > > > > > Sempre que NÃO exista uniformidade na distribuição de > valores > > > > > sobre o grupo. Voltando ao exemplo dos torcedores, se em > nosso > > > > > conjunto não tivéssemos os torcedores do VOCEM, não seria > > > > > interessante usar histogramas, porque não ganharíamos nada, > > > > > haveria necessidade de estudar melhor os dados e talvez usar > > > > > bitmap, cluster, etc. Tudo depende, mas se há distruibuição > > > > > ^^^^^^ ^^^^^^^ ^^^ > > > > > uniforme no grupo ou constante variação de valores > distintos, a > > > > > coluna não é candidata ao histograma. Outra ocasião onde > > > > > deveríamos evitar o histograma é quando a coluna é > comparada com > > > > > bind variable. De novo o exemplo, se o campo torce_para for > > > > > comparado com bind variable, ele não é candidado a > histogramas. > > > O > > > > > otimizador precisa conhecer o valor literal da comparação > para > > > > > percorrer os buckets(endpoint_number, endpoint_value). > > > > > > > > > > 3) Só lembrando que o propósito do artigo foi dar uma > introdução > > > de > > > > > histograma, onde um colega da lista perguntou qual a > vantagem de > > > > > usá-lo. O artigo foi elaborado para demonstrar a > aplicabilidade > > > do > > > > > histograma. > > > > > Mas, vamos a criação do índice e teste. > > > > > > > > > > SQL> create bitmap index t_bm on t ( x_hist ) parallel > nologging; > > > > > > > > > > Index created. > > > > > > > > > > SQL> exec dbms_stats.gather_index_stats( user, 'T_BM' ) > > > > > > > > > > PL/SQL procedure successfully completed. > > > > > > > > > > SQL> set autotrace traceonly > > > > > SQL> select * from t where x_hist = 2; > > > > > > > > > > 1835197 rows selected. > > > > > > > > > > > > > > > Execution Plan > > > > > ---------------------------------------------------------- > > > > > 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2986 > Card=1834400 > > > > > Bytes=45860000) > > > > > 1 0 TABLE ACCESS (FULL) OF 'T' (Cost=2986 Card=1834400 > > > > > Bytes=45860000) > > > > > > > > > > > > > > > > > > > > > > > > > Statistics > > > > > ---------------------------------------------------------- > > > > > 0 recursive calls > > > > > 0 db block gets > > > > > 49551 consistent gets > > > > > 30842 physical reads > > > > > 0 redo size > > > > > 54405784 bytes sent via SQL*Net to client > > > > > 202512 bytes received via SQL*Net from client > > > > > 18353 SQL*Net roundtrips to/from client > > > > > 0 sorts (memory) > > > > > 0 sorts (disk) > > > > > 1835197 rows processed > > > > > > > > > > Deixando o otimizador trabalhar com as estatísticas coletadas > ele > > > > > achou melhor fazer FTS. > > > > > Mas vamos forçar o índice. > > > > > > > > > > SQL> select /*+ index(t, t_bm) */ * from t where x_hist = 2; > > > > > > > > > > 1835197 rows selected. > > > > > > > > > > > > > > > Execution Plan > > > > > ---------------------------------------------------------- > > > > > 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=15420 > > > Card=1834400 > > > > > Bytes=45860000) > > > > > 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'T' (Cost=15420 > > > > > Card=1834400 Bytes=45860000) > > > > > 2 1 BITMAP CONVERSION (TO ROWIDS) > > > > > 3 2 BITMAP INDEX (SINGLE VALUE) OF 'T_BM' > > > > > > > > > > > > > > > > > > > > > > > > > Statistics > > > > > ---------------------------------------------------------- > > > > > 0 recursive calls > > > > > 0 db block gets > > > > > 49475 consistent gets > > > > > 29340 physical reads > > > > > 72 redo size > > > > > 54405784 bytes sent via SQL*Net to client > > > > > 202512 bytes received via SQL*Net from client > > > > > 18353 SQL*Net roundtrips to/from client > > > > > 0 sorts (memory) > > > > > 0 sorts (disk) > > > > > 1835197 rows processed > > > > > > > > > > Praticamente o mesmo esforço, embora o custo tenha sido maior > do > > > > > índice em relação ao FTS - (Cost=15420) contra (Cost=2986) na > > > mesma > > > > > cardinalidade 1834400. Acho que seria necessário um tkprof > aqui > > > para > > > > > análise mais a fundo, mas como o propósito não era investigar > > > bitmap > > > > > index, vou deixar o script que eu usei para fazer o teste e > voce > > > pode > > > > > realizá-lo e postar aqui mais tarde. > > > > > > > > > > drop table t; > > > > > > > > > > create table t nologging as > > > > > select object_id, object_name, mod(rownum, 4) x_hist > > > > > from all_objects > > > > > / > > > > > insert /*+ append */ into t > > > > > select * from t; > > > > > commit; > > > > > insert /*+ append */ into t > > > > > select * from t; > > > > > commit; > > > > > insert /*+ append */ into t > > > > > select * from t; > > > > > commit; > > > > > insert /*+ append */ into t > > > > > select * from t; > > > > > commit; > > > > > insert /*+ append */ into t > > > > > select * from t; > > > > > commit; > > > > > > > > > > update t set x_hist = 5 where rownum <= 10; > > > > > > > > > > select x_hist, count(*) > > > > > from t > > > > > group by rollup(x_hist) > > > > > / > > > > > > > > > > create index t_idx on t (x_hist) parallel 8 nologging; > > > > > > > > > > begin > > > > > dbms_stats.gather_table_stats( > > > > > user, > > > > > 'T', > > > > > estimate_percent => 10, > > > > > method_opt => 'for columns x_hist size 10', > > > > > cascade => true, > > > > > degree => 8 ); > > > > > end; > > > > > / > > > > > > > > > > --- Em oracle_br@yahoogrupos.com.br, falmeida <[EMAIL PROTECTED]> > > > escreveu > > > > > > Ola Marcio, > > > > > > > > > > > > Também gostei muito, mas tenho as seguintes perguntas, a > saber: > > > > > > > > > > > > 1) Você após ter aplicado o 2 metodo de coleta de > estatísticas > > > você > > > > > só > > > > > > rodou a query abaixo: > > > > > > > > > > > > select * from t 2 where x_hist = 5 > > > > > > > > > > > > Não seria legal também demonstrar como ficaria com a query > que > > > tem > > > > > um > > > > > > monte de registros? > > > > > > > > > > > > select * from t 2 where x_hist = 4 > > > > > > > > > > > > 2) Não seria melhor criar um bitmap index, dado que você tem > > > baixa > > > > > > seletividade nesta coluna? > > > > > > > > > > > > 3) Já que você tem estes dados na tabela t poderia criar um > > > indice > > > > > > bitmap e mostrar o resultado aqui? > > > > > > > > > > > > Desde já agradeço, > > > > > > > > > > > > Fabão. > > > > > > > > > > > > > > > > > > Em 24/11/05, Rosiano Vieira de Sales<[EMAIL PROTECTED]> > > > escreveu: > > > > > > > Marcio... dei uma lida no seu blog a respeito e gostei > muito > > > da > > > > > nota que vc publicou ....contudo fiquei com uma > dúvida ....qual o > > > > > critério para definir o size do historgrama ??? .... se tiver > > > algo a > > > > > respeito envie para o grupo .. vai ser de muito proveito ..... > > > > > > > > > > > > > > abç. > > > > > > > > > > > > > > Rosiano > > > > > > > > > > > > > > -----Mensagem original----- > > > > > > > De: oracle_br@yahoogrupos.com.br em nome de Marcio > > > Portes > > > > > > > Enviada: qua 23/11/2005 15:06 > > > > > > > Para: oracle_br@yahoogrupos.com.br > > > > > > > Cc: > > > > > > > Assunto: [oracle_br] Re: Histogramas.???? > > > > > > > > > > > > > > > > > > > > > > > > > > > > Welvis, tomei a liberdade de escrever uma pequena > > > > > introdução para sua > > > > > > > dúvida no meu blog. > > > > > > > Se interessar: > > > > > > > http://mportes.blogspot.com/2005/11/histograma- > > > > > introduo.html > > > > > > > > > > > > > > abraços, > > > > > > > > > > > > > > --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas > > > Silva > > > > > Moreto > > > > > > > <[EMAIL PROTECTED]> escreveu > > > > > > > > Quando devo estar utilizando Histogramas.... > quais > > > > > > > > beneficios terei utilizando o. > > > > > > > > > > > > > > > > > > > > > > > > att, > > > > > > > > > > > > > > > > Welvis Douglas > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________________ > > > > > > > > Yahoo! Acesso Grátis: Internet rápida e > grátis. > > > > > > > > Instale o discador agora! > > > > > > > > http://br.acesso.yahoo.com/ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------- > ---- > > > ---- > > > > > -------------------------------------------------------------- > - > > > > > > > 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/ > > > > > > > --------------------------------------------------- > ---- > > > ---- > > > > > -------------------------------------------------------------- > - > > > > > > > > > _____________________________________________________________________ > > > > > > > Area de download do grupo - > > > > > http://www.4shared.com/dir/101727/a4dcc423 > > > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [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/ > > > > > > > ---------------------------------------------------------- > ---- > > > ---- > > > > > -------------------------------------------------------- > > > > > > > > > _____________________________________________________________________ > > > > > > > Area de download do grupo - > > > > > http://www.4shared.com/dir/101727/a4dcc423 > > > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Fábio Martinho de Almeida > > > > > > Niterói-RJ-Brasil > > > > > > > > > > > > Visite o fotolog: http://fotolog.net/canon_a300 > > > > > > > > > > > > > > > > > > > > > > > > > -------------------------------------------------------------- > ---- > > > -------------------------------------------------------- > > > > > 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/ > > > > > -------------------------------------------------------------- > ---- > > > -------------------------------------------------------- > > > > _____________________________________________________________________ > > > > > Area de download do grupo - > > > http://www.4shared.com/dir/101727/a4dcc423 > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Fábio Martinho de Almeida > > > > Niterói-RJ-Brasil > > > > > > > > Visite o fotolog: http://fotolog.net/canon_a300 > > > > > > > > > > > > > > > ------------------------------------------------------------------ > -------------------------------------------------------- > > > 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/ > > > ------------------------------------------------------------------ > -------------------------------------------------------- > _____________________________________________________________________ > > > Area de download do grupo - > http://www.4shared.com/dir/101727/a4dcc423 > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Fábio Martinho de Almeida > > Niterói-RJ-Brasil > > > > Visite o fotolog: http://fotolog.net/canon_a300 > > > > > -------------------------------------------------------------------------------------------------------------------------- > 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/ > --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ > Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 > Links do Yahoo! Grupos > > > > > > > > -- Fábio Martinho de Almeida Niterói-RJ-Brasil Visite o fotolog: http://fotolog.net/canon_a300 -------------------------------------------------------------------------------------------------------------------------- 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/ --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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