Valeu chiappa, realmente não uso muito o explain pelo sqlplus, normalmente uso ferramenta gráfica e fica dificil copiar. De qualquer maneira segue com o script que vc enviou.
------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 26 | 2165K| |* 1 | FILTER | | | | | | 2 | SORT GROUP BY | | 1 | 26 | 2165K| | 3 | MERGE JOIN CARTESIAN| | 71M| 1763M| 1965K| |* 4 | TABLE ACCESS FULL | TB_LOG_TAREFA | 8433 | 75897 | 233 | | 5 | BUFFER SORT | | 8433 | 140K| 2165K| |* 6 | TABLE ACCESS FULL | TB_LOG_TAREFA | 8433 | 140K| 233 | ------------------------------------------------------------------------- Abraços, Nelson Cartaxo DBA ORACLE -----Mensagem original----- De: jlchiappa [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 4 de abril de 2006 15:57 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Ajuda com Query Urgente Colega, PMFJI mas uma das mais importantes coisas quando se analiza um provável caso de full-scan "errado" é a número de linhas que cada passo do plano traz : isso já aparece direitonho na PLAN_TABLE da versão 9i, mas o seu script de consulta à PLAN_TABLE pelo jeito não o está mostrando (que pelo famigerado lpad deduzo ser uma versão ANTIGA, dessas copiadas pelos sites/livros de Oracle) : sugiro que vc APOSENTE esse morto-vivo aí, e passe a usar o seguinte no 9i : [EMAIL PROTECTED]:SQL>get explain 1 select distinct statement_id from plan_table; 2 accept V_STATEMENT_ID prompt 'Statement a Explicar (respeitando maiúsculas/minusc.) :' 3* select * from table(dbms_xplan.display ('PLAN_TABLE', '&V_STATEMENT_ID', 'ALL')); [EMAIL PROTECTED]:SQL> e tenha no 9i o parâmetro statistics_level ao menos como TYPICAL, olha só como é mais completinho o report assim : [EMAIL PROTECTED]:SQL>ed Gravou arquivo afiedt.buf 1 explain plan set statement_id='P1' for 2 select * 3 from (select e.empno, d.dname 4 from emp e ,dept d 5 where e.deptno=d.deptno 6 and sal > 1000 7 order by sal desc 8 ) 9* where rownum < 10 [EMAIL PROTECTED]:SQL>/ Explicado. [EMAIL PROTECTED]:SQL>@explain STATEMENT_ID ------------------------------ P1 Statement a Explicar (respeitando maiúsculas/minusc.) :P1 antigo 1: select * from table(dbms_xplan.display ('PLAN_TABLE', '&V_STATEMENT_ID', 'ALL')) novo 1: select * from table(dbms_xplan.display ('PLAN_TABLE', 'P1', 'ALL')) PLAN_TABLE_OUTPUT ------------------------- ---------------------------------------------------------------------- ------ |Id |Operation | Name |Rows |Bytes|Cost (%CPU)| ---------------------------------------------------------------------- ------ | 0 |SELECT STATEMENT | | 9| 198| 21 (5)| |*1 | COUNT STOPKEY | | | | | | 2 | VIEW | | 13| 286| | |*3 | SORT ORDER BY STOPKEY | | 13| 247| 21 (5)| |*4 | TABLE ACCESS BY INDEX ROWID| EMP | 2| 16| 2 (50)| | 5 | NESTED LOOPS | | 13| 247| 9 (12)| | 6 | TABLE ACCESS FULL | DEPT | 6| 66| 2 (0)| |*7 | INDEX RANGE SCAN | IDX_DEPTNO_JOB| 5| | 1 (0)| ---------------------------------------------------------------------- ------ Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<10) 3 - filter(ROWNUM<10) 4 - filter("E"."SAL">1000) 7 - access("E"."DEPTNO"="D"."DEPTNO") 21 linhas selecionadas. [EMAIL PROTECTED]:SQL> ==< taí ó, mostrando direitinho que operação cada passo está fazendo, quem está sendo filtrado, as LINHAS e os BYTES envolvidos em cada passo, muito mais completo - a tua query extrai o custo da PLAN_TABLE, legal, mas e o resto ? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo <[EMAIL PROTECTED]> escreveu > > Marcio, talvez eu possa tentar com a equipe de desenvolvimento que mudem a > query, desde que tenha os mesmos resultados.Se vc tiver alguma dica > agradeço. > > Segue os planos de desenvolmimento (9.2.0.7) e produção (8.1.7.4) > > Resultado na Base de Produção > > LPAD('',2*(LEVEL-1))||OPERATION > -------------------------------------------------------------------- -------- > ------------------------ > OPTIONS Object POSITION > COST > ------------------------------ ------------------------------ ------ ---- > ---------- > SELECT STATEMENT > 165 > 165 > > FILTER > 1 > > TABLE ACCESS > FULL TB_LOG_TAREFA 1 > 165 > > SORT > AGGREGATE 2 > > TABLE ACCESS > FULL TB_LOG_TAREFA 1 > 165 > > > > Resultado na Base de Desenvolvimento > > LPAD('',2*(LEVEL-1))||OPERATION > -------------------------------------------------------------------- -------- > ------------------------ > OPTIONS Object POSITION > COST > ------------------------------ ------------------------------ ------ ---- > ---------- > SELECT STATEMENT > 2165784 > 2165784 > > FILTER > 1 > > SORT > GROUP BY 1 > 2165784 > > MERGE JOIN > CARTESIAN 1 > 1965122 > > TABLE ACCESS > FULL TB_LOG_TAREFA 1 > 233 > > BUFFER > SORT 2 > 2165551 > > TABLE ACCESS > FULL TB_LOG_TAREFA 1 > 233 > > > Parametros 9.2.0.7 > > NAME Type VALUE > ------------------------------------ --------------- > ---------------------------- > optimizer_dynamic_sampling integer 1 > optimizer_features_enable string 9.2.0 > optimizer_index_caching integer 0 > optimizer_index_cost_adj integer 100 > optimizer_max_permutations integer 2000 > optimizer_mode string CHOOSE > db_file_multiblock_read_count integer 8 > > Obrigado. > > > > > Atenciosamente, > Nelson Cartaxo > DBA ORACLE > GABD - Ger. Adm. de Banco de Dados > DATASUS/RJ (MS) > Tel: 3985-7090 > > -----Mensagem original----- > De: Marcio Portes [mailto:[EMAIL PROTECTED] > Enviada em: terça-feira, 4 de abril de 2006 14:02 > Para: oracle_br@yahoogrupos.com.br > Assunto: Re: RES: [oracle_br] Ajuda com Query Urgente > > > O que voce pode fazer com a query? Voce mudar? Colocar hint? > Poderia postar os 2 planos? > > Acho que existe várias maneiras de resolver o problema, resta saber > qual a menos impactante. > > poste também: > > show parameter optimizer > show parameter db_file_multiblock_read_count > > > --- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo > <[EMAIL PROTECTED]> escreveu > > > > Realmente talvez resolvesse. O Problema que esse banco estava na > versão > > 8.1.7 e foi migrado recentemente para 9.2. Esta query funcionava > > perfeitamente, inclusive funciona em produção (8.1.7.4). Depois que > migramos > > o plano faz merge join cartesiano e a query fica perdida. Abortei > com 5 > > minutos de execução, se uso o RULE a query executa sem problemas. > > > > Obrigado. > > > > > > Atenciosamente, > > Nelson Cartaxo > > DBA ORACLE > > -----Mensagem original----- > > De: Anderson Haertel Rodrigues [mailto:[EMAIL PROTECTED] > > Enviada em: terça-feira, 4 de abril de 2006 13:38 > > Para: oracle_br@yahoogrupos.com.br > > Assunto: Re: [oracle_br] Ajuda com Query Urgente > > > > > > > > Nelson, > > > > Analisando a Query e não os parâmetros do Banco, qual > > a necessidade de se ter um IN comparando ao MAX()? > > > > Neste caso um dt_inicio = MAX resolve o teu problema. > > Certo? > > > > Anderson Haertel Rodrigues > > Administrador de Banco de Dados - DBA > > Florianópolis/SC > > > > --- Nelson Cartaxo <[EMAIL PROTECTED]> > > escreveu: > > > > > Pessoal mais uma vez vou tentar recorrer a voces. > > > > > > Oracle 9.2.0.7 RedHat 2.1 > > > > > > Seguinte ao rodar a query abaixo com a tabela > > > analisada com dbms_stats e > > > indices tambem analisados, o plano mostra um merge > > > join (cartesian) e a > > > query trava, ou seja, fica no limbo. Quando coloco > > > um hint de RULE a query > > > fica instantanea. Alguem poderia me dar uma luz > > > como faço para resolver. > > > De repente to comendo mosca em algum parametro do > > > oracle, ou algo parecido. > > > > > > A query é > > > > > > SELECT /*+ RULE */st_tarefa > > > FROM siops.tb_log_tarefa Text > > > WHERE co_tarefa = 10 > > > AND dt_inicio IN ( > > > SELECT MAX(dt_inicio) > > > FROM siops.tb_log_tarefa TInt > > > WHERE tExt.co_tarefa = TInt.co_tarefa) > > > > > > > > > > > > Obrigado desde já pelo help. > > > > > > > > > > > > > > > > > > Atenciosamente, > > > Nelson Cartaxo > > > DBA ORACLE > > > > > > > > > -----Mensagem original----- > > > De: Anderson Haertel Rodrigues > > > [mailto:[EMAIL PROTECTED] > > > Enviada em: terça-feira, 4 de abril de 2006 11:16 > > > Para: oracle_br@yahoogrupos.com.br > > > Assunto: Re: [oracle_br] ENC: Dúvida BLOB > > > > > > > > > Ricardo, > > > > > > Eu respondi a sua questão no Sábado a noite. > > > > > > > > > --- Ricardo Lyrio <[EMAIL PROTECTED]> escreveu: > > > > > > > Pessoal, > > > > > > > > > > > > > > > > Estou com um impasse que é o seguinte: > > > > > > > > > > > > > > > > Tenho a seguinte estrutura: > > > > > > > > > > > > > > > > 36 telas de forms sendo que apenas 5 fazem > > > > tratamento de imagens > > > > > > > > > > > > > > > > Tabela 1 > > > > > > > > Campo01 > > > > > > > > Campo02 > > > > > > > > ... > > > > > > > > Campo0n > > > > > > > > Imagem01 > > > > > > > > Imagem02 > > > > > > > > ... > > > > > > > > Imagem12 > > > > > > > > > > > > > > > > As imagens são todas Blob > > > > > > > > > > > > > > > > Esta tabela tem mais ou menos 3.000.000 de > > > registros > > > > > > > > > > > > > > > > O que seria melhor: > > > > > > > > > > > > > > > > Dividir a tabela, retirar as imagens e criar > > > uma > > > > outra tabela > > > > > > > > > > > > > > > > Tabela 2 > > > > > > > > FK da tabela1 > > > > > > > > FK de Descrição da imagem > > > > > > > > Imagem > > > > > > > > > > > > > > > > Existe alguma limitação para o Oracle tratar em as > > > > imagens numa mesma > > > > tabela? > > > > > > > > > > > > > > > > Grato > > > > > > > > Ricardo Lyrio > > > > > > > > > > > > > > > > > > > > > > > > [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/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > > > > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------ -- > -------- > > > > > ---------------------------------------------- > ______________________________ > > > ____________________________________ > > > > > > > > Este Grupo recebe o apoio da SQL Magazine - > > > > www.devmedia.com.br/sqlmagazine > > > > > > > > > __________________________________________________________________ > > > > O grupo Oracle_br não aceita anexos. Quando > > > oferecer > > > > algum arquivo, tenha o link do mesmo para evitar > > > > trafego(pedidos) desnecessário. > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > http://br.yahoo.com/info/utos.html > <http://br.yahoo.com/info/utos.html> > > < http://br.yahoo.com/info/utos.html <http://br.yahoo.com/info/utos.html> > > > > > < http://br.yahoo.com/info/utos.html > <http://br.yahoo.com/info/utos.html> > < http://br.yahoo.com/info/utos.html <http://br.yahoo.com/info/utos.html> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________________ > > > > > > Abra sua conta no Yahoo! Mail: 1GB de espaço, > > > alertas de e-mail no celular e > > > anti-spam realmente eficaz. > > > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> < > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> > > > > < http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> < > http://br.info.mail.yahoo.com/ <http://br.info.mail.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/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > > > > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > > > > > > > > > === message truncated === > > > > > > > > > > _______________________________________________________ > > Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no > celular e > > anti-spam realmente eficaz. > > http://br.info.mail.yahoo.com/ <http://br.info.mail.yahoo.com/> < > http://br.info.mail.yahoo.com/ <http://br.info.mail.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/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > < http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > > > ------------------------------------------------------------------ -- > -------- > > ---------------------------------------------- > ______________________________ > > ____________________________________ > > > > Este Grupo recebe o apoio da SQL Magazine - > www.devmedia.com.br/sqlmagazine > > __________________________________________________________________ > > O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, > tenha o > > link do mesmo para evitar trafego(pedidos) desnecessário. > > > > > > > > _____ > > > > Links do Yahoo! Grupos > > > > > > * Para visitar o site do seu grupo na web, acesse: > > http://br.groups.yahoo.com/group/oracle_br/ > <http://br.groups.yahoo.com/group/oracle_br/> > > < http://br.groups.yahoo.com/group/oracle_br/ > <http://br.groups.yahoo.com/group/oracle_br/> > > > > > > > * Para sair deste grupo, envie um e-mail para: > > [EMAIL PROTECTED] > > <mailto:[EMAIL PROTECTED] > subject=Unsubscribe> > > > > > > * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do > > Serviço do Yahoo! < http://br.yahoo.com/info/utos.html > <http://br.yahoo.com/info/utos.html> > . > > > > > > > > > > [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/ > <http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/> > -------------------------------------------------------------------- -------- > ---------------------------------------------- ______________________________ > ____________________________________ > > Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine > __________________________________________________________________ > O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o > link do mesmo para evitar trafego(pedidos) desnecessário. > > > > _____ > > Links do Yahoo! Grupos > > > * Para visitar o site do seu grupo na web, acesse: > http://br.groups.yahoo.com/group/oracle_br/ > <http://br.groups.yahoo.com/group/oracle_br/> > > > * Para sair deste grupo, envie um e-mail para: > [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED] subject=Unsubscribe> > > > * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do > Serviço do Yahoo! <http://br.yahoo.com/info/utos.html> . > > > > > [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/ ---------------------------------------------------------------------------- ----------------------------------------------______________________________ ____________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE 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 Termos do Serviço do Yahoo!. -------------------------------------------------------------------------------------------------------------------------- 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/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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