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 [email protected], 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: [email protected]
> 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 [email protected], 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: [email protected]
> > 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: [email protected]
> > > 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/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/> >
> > >
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/> > >
> > >
> > > >
> > > >
> > >
> > ------------------------------------------------------------------
--
> --------
> > >
> > ----------------------------------------------
> ______________________________
> > > ____________________________________
> > > >
> > > > 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/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/> >
> > >
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/> > >
> > >
> > >
> > === 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/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> > < http://www.mail-archive.com/[email protected]/
> <http://www.mail-archive.com/[email protected]/> >
> > ------------------------------------------------------------------
--
> --------
> > ----------------------------------------------
> ______________________________
> > ____________________________________
> >
> > 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/[email protected]/
> <http://www.mail-archive.com/[email protected]/>
> --------------------------------------------------------------------
--------
> ----------------------------------------------
______________________________
> ____________________________________
>
> 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/[email protected]/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
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