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

 



Responder a