Colega, isso está documentado no manual "Oracle8i Designing and
Tuning for Performance, cap. 6 -
Using SQL Trace and TKPROF (embora imho esteja melhor explicado no
equivalente 9i, que é "Oracle9i Database Performance Tuning Guide and
Reference" cap. 10 - Using SQL Trace and TKPROF), recomendo um
estudo, mas num overview : PARSE é a quantidade de vezes em que o
banco teve que "compilar" o SQL (porque ele não estava no cache de
SQLs, ou porque a aplicação manda um SQL ligeiramente diferente a
cada vez ou usa um driver tipo odbc de terceiros inapropriado, ,
coisa do tipo), EXECUTE é quantas vezes o SQL foi executado e FETCH é
a quantidade de vezes em que o banco buscou dados e ROWS é a
quantidade de linhas . Sabendo disso, no teu primeiro caso, a
primeira coisa que salta aos olhos é que o SQL foi executado 6006
vezes e teve que 6006 vezes ir pro banco pra ler 6006 linhas, ou
seja, vc está fazendo I/O linha-a-linha, também conhecido como row-by-
row, ou mais propriamente slow-by-slow, é a forma MAIS LENTA que
existe, necessariamente o banco Oracle tem recursos pra que a cada
vez que o banco seja acionada sejam lidas N linhas ao invés de uma,
se a execução desta query é via PL/SQL o recurso é o ARRAY
PROCESSING/BULK COLLECT, por exemplo. Outro ponto de medição é a
quantidade de I/Os lógicos contra número de linhas, no caso ao todo
foram precisos 18018 LIOs pra recuperar 6006 linhas, cada linha
custou cerca de 3 blocos de acesso, o que dá a impressão é que há
algum indíce envolvido, a recuperação de uma linha via índice implica
mesmo em vários LIOs (um no bloco header, outro(s) no(s) branch
blocks, outro no leaf block aonde o dado reside e mais um ao fim na
tabela via rowid, mas isso só podemos supor, já que vc NÂO dá os
planos... Da mesma forma, pra se analisar eficiência mais geral, vc
TEM QUE ter o plano, as estatísticas, os volumes e condições reais, a
situação dos índices e da própria tabela....
Já a segunda query embora seja maior é ** muito ** mas eficiente em
termos de recursos, já que com 8 execuções trouxe do banco 6531
linhas, o que já era o total de linhas desejado, MAS o custo em
termos de LIOs foi pesadíssimo, vc fez 1923711 LIOs pra ao fim obter
6539 linhas, isso dá coisa de quase 300 LIOs por cada linha, essa
query está ** HORROROSA ** , podemos supor aí algum table scan
indevido com certeza, TALVEZ por causa desses UPPERs que vc tem
espalhado nela, como penso que vc sabe qquer função ou modificação
num campo indexado com índice b*tree "comum" automaticamente
DESABILITA o uso desse índice, muitas vezes a solução é vc ter um
índice com a função em questão....
===>> Recomendo, dê uma estudada no manual citado (talvez
complementando com o livro "Oracle SQL High-Performance Tuning (2nd
Edition)", de Guy Harrison, ele é muito interessante no quesito
análise de planos e de TKPROF , e com o "Expert One on One: Oracle",
Thomas Kyte, já que seu banco é 8i, levante DIREITINHO os planos de
execução, as estrutura atual física (tabelas, índices, extents em
uso, como está a coleta de estatísticas se CBO está em uso, config do
banco e do hardware), que com isso vc deve poder prosseguir na sua
análise. Qquer dúvida, COM ESSAS INFOs levantadas, manda outra msg
pra gente com os detalhes que a gente pode palpitar mais...
[]s
Chiappa
--- Em oracle_br@yahoogrupos.com.br, "terra_banco"
<[EMAIL PROTECTED]> escreveu
>
> Pessoal, obrigado a todos pelo retorno.
> Se possivel gostaria de uma outra ajuda. Consegui fazer a leitura,
porem, necessito de auxilio para "decifrar".
>
> Tenho duas querys abaixo, que fazem parte de um processo bem
demorado do sistema. Porém, nao consegui dados os valores
(parse,execute, etc) ler exatamente o que significam.
>
> Poderiam me auxiliar no esclarecimento de cada um desses dados que
sao retornados?
>
> Obrigado a todos novamente.
>
>
>
>
> 1 - Query pequena:
>
> SELECT PROGRESS_RECID unique_id_0
> FROM
> EMS204PORO8P932ADM.EMITENTE T0 WHERE ((COD_EMITENTE = :1)) order
by
> COD_EMITENTE
>
> call count cpu elapsed disk query
current rows
> ------- ------ -------- ---------- ---------- ---------- ----------
----------
> Parse 0 0.00 0.00 0 0
0 0
> Execute 6006 0.21 0.25 0 0
0 0
> Fetch 6006 0.17 0.16 0 18018
0 6006
> ------- ------ -------- ---------- ---------- ---------- ----------
----------
> total 12012 0.38 0.41 0 18018
0 6006
> Misses in library cache during parse: 0
> Optimizer goal: RULE
> Parsing user id: 120
>
> 2 - Query grande:
>
> SELECT T0.PROGRESS_RECID
unique_id_0,T0.U##COD_ESTABEL,T0.COD_ESTABEL,
>
T0.U##COD_DEPOS,T0.COD_DEPOS,T0.U##IT_CODIGO,T0.IT_CODIGO,T0.U##LOTE,
>
T0.LOTE,T0.TIPO_TRANS,T0.CT_CODIGO,T0.SC_CODIGO,T0.DT_TRANS,T0.ESP_DOC
TO,
>
T0.NUM_SEQUEN,T0.U##SERIE_DOCTO,T0.SERIE_DOCTO,T0.QUANTIDADE,T0.UN,
>
T0.NUMERO_ORDEM,T0.REFERENCIA,T0.U##NRO_DOCTO,T0.NRO_DOCTO,T0.COD_EMIT
ENTE,
>
T0.PESO_LIQUIDO,T0.VALOR_NOTA,T0.VALOR_ICM,T0.VALOR_IPI,T0.U##NAT_OPER
ACAO,
> T0.NAT_OPERACAO,T0.DESCRICAO_DB,T0.TIPO_VALOR,T0.VALOR_ISS,
>
T0.VL_ICM_FASB##1,T0.VL_ICM_FASB##2,T0.VL_IPI_FASB##1,T0.VL_IPI_FASB##
2,
>
T0.VL_ISS_FASB##1,T0.VL_ISS_FASB##2,T0.VL_NOTA_FASB##1,T0.VL_NOTA_FASB
##2,
>
T0.TIPO_PRECO##1,T0.TIPO_PRECO##2,T0.TIPO_PRECO##3,T0.U##COD_REFER,
> T0.COD_REFER,T0.DT_NF_SAIDA,T0.OP_SEQ,T0.USUARIO,T0.NR_TRANS,
> T0.COD_ESTABEL_DES,T0.SEQUEN_NF,T0.ORIGEM_VALOR,T0.NUM_ORD_DES,
>
T0.NUM_SEQ_DES,T0.NUM_ORD_INV,T0.NR_ORD_REFER,T0.NR_REQ_SUM,T0.COD_ROT
EIRO,
>
T0.NR_REPORTE,T0.ITEM_PAI,T0.OP_CODIGO,T0.U##COD_LOCALIZ,T0.COD_LOCALI
Z,
>
T0.COD_USU_ULT_ALTER,T0.HR_TRANS,T0.U##CONTA_CONTABIL,T0.CONTA_CONTABI
L,
>
T0.NR_TRANS_DEB,T0.COD_ORIG_TRANS,T0.CT_SALDO,T0.SC_SALDO,T0.CONTA_SAL
DO,
>
T0.VALOR_MAT_M##1,T0.VALOR_MAT_M##2,T0.VALOR_MAT_M##3,T0.VALOR_MOB_M##
1,
>
T0.VALOR_MOB_M##2,T0.VALOR_MOB_M##3,T0.VALOR_GGF_M##1,T0.VALOR_GGF_M##
2,
>
T0.VALOR_GGF_M##3,T0.VALOR_MAT_O##1,T0.VALOR_MAT_O##2,T0.VALOR_MAT_O##
3,
>
T0.VALOR_MOB_O##1,T0.VALOR_MOB_O##2,T0.VALOR_MOB_O##3,T0.VALOR_GGF_O##
1,
>
T0.VALOR_GGF_O##2,T0.VALOR_GGF_O##3,T0.VALOR_MAT_P##1,T0.VALOR_MAT_P##
2,
>
T0.VALOR_MAT_P##3,T0.VALOR_MOB_P##1,T0.VALOR_MOB_P##2,T0.VALOR_MOB_P##
3,
>
T0.VALOR_GGF_P##1,T0.VALOR_GGF_P##2,T0.VALOR_GGF_P##3,T0.COD_PROG_ORIG
,
>
T0.REFER_CONTAB,T0.DT_CONTAB,T0.HR_CONTAB,T0.CONTABILIZADO,T0.NR_ORD_P
RODU,
>
T0.VL_TAXA,T0.CHAR_1,T0.CHAR_2,T0.DEC_1,T0.DEC_2,T0.INT_1,T0.INT_2,T0.
LOG_1,
>
T0.LOG_2,T0.DATA_1,T0.DATA_2,T0.CHECK_SUM,T0.DT_CRIACAO,T0.BASE_CALCUL
O,
> T0.PROGRESS_RECID,T1.PROGRESS_RECID unique_id_1,T1.U##IT_CODIGO,
>
T1.IT_CODIGO,T1.DESCRICAO_1,T1.DESCRICAO_2,T1.U##UN,T1.UN,T1.COMPR_FAB
RIC,
>
T1.GE_CODIGO,T1.U##FM_CODIGO,T1.FM_CODIGO,T1.DATA_IMPLANT,T1.DATA_LIBE
RAC,
>
T1.PATH,T1.U##CODIGO_REFER,T1.CODIGO_REFER,T1.INFORM_COMPL,T1.NIV_MAIS
_BAI,
> T1.LOC_UNICA,T1.TIPO_CON_EST,T1.U##DEPOSITO_PAD,T1.DEPOSITO_PAD,
>
T1.CICLO_CONTAG,T1.DATA_ULT_CON,T1.VARIAC_ACUM,T1.CURVA_ABC,T1.DATA_UL
T_ENT,
> T1.DATA_ULT_SAI,T1.DATA_BASE,T1.DATA_ULT_REP,T1.COD_OBSOLETO,
> T1.CONSUMO_PREV,T1.CONSUMO_AAD,T1.U##COD_COMPRADO,T1.COD_COMPRADO,
>
T1.DEMANDA,T1.EMISSAO_ORD,T1.CLASSIF_ABC,T1.POLITICA,T1.PERIODO_FIXO,
> T1.TEMPO_SEGUR,T1.QUANT_SEGUR,T1.RES_INT_COMP,T1.RES_FOR_COMP,
> T1.RES_CQ_COMP,T1.RESSUP_FABRI,T1.RES_CQ_FABRI,T1.LOTE_MULTIPL,
> T1.TIPO_LOTE_EC,T1.LOTE_ECONOMI,T1.FATOR_REFUGO,T1.QUANT_PERDA,
>
T1.CLASSE_REPRO,T1.CONTR_QUALID,T1.U##CLASS_FISCAL,T1.CLASS_FISCAL,
> T1.ALIQUOTA_IPI,T1.CODIGO_ORIG,T1.CD_TRIB_ICM,T1.CD_TRIB_IPI,
> T1.PESO_LIQUIDO,T1.FATOR_CONVER,T1.TIPO_DESC_NT,T1.BAIXA_ESTOQ,
> T1.MOEDA_PADRAO,T1.PRECO_BASE,T1.PRECO_UL_ENT,T1.PRECO_REPOS,
> T1.U##CD_PLANEJADO,T1.CD_PLANEJADO,T1.NR_LINHA,T1.TIPO_REQUIS,
>
T1.CAP_EST_FABR,T1.TIPO_CONTR,T1.TIPO_EST_SEG,T1.DT_ULT_BEN,T1.FT_CONV
ERSAO,
>
T1.DEC_FTCON,T1.PM_JA_CALC,T1.FRACIONA,T1.REPORTE_MOB,T1.IND_ITEM_FAT,
> T1.PESO_BRUTO,T1.CD_TRIB_ISS,T1.ALIQUOTA_ISS,T1.IND_IMP_DESC,
>
T1.IND_IPI_DIFE,T1.LOTE_MINIMO,T1.IND_INF_QTF,T1.VL_MAT_ANT,T1.VL_MOB_
ANT,
>
T1.RESPONSAVEL,T1.USUARIO_ALT,T1.DATA_OBSOL,T1.USUARIO_OBSOL,T1.CRITIC
IDADE,
>
T1.HORIZ_FIXO,T1.LOTE_MULVEN,T1.COD_SERVICO,T1.COMPRIM,T1.LARGURA,T1.A
LTURA,
> T1.QT_MAX_ORDEM,T1.PERM_SALDO_NEG,T1.DT_PR_FISC,T1.PRECO_FISCAL,
>
T1.CT_CODIGO,T1.SC_CODIGO,T1.PR_SEM_TX,T1.DIV_ORDEM,T1.U##COD_ESTABEL,
> T1.COD_ESTABEL,T1.U##COD_PRODUTO,T1.COD_PRODUTO,T1.U##FM_COD_COM,
>
T1.FM_COD_COM,T1.FT_CONV_FMCOML,T1.VOLUME,T1.DESC_NACIONAL,T1.DESC_INT
ER,
>
T1.IND_ESPECIFICO,T1.PER_MIN_LUC,T1.IND_BACKORDER,T1.REP_PROD,T1.CD_FO
RMULA,
>
T1.CD_ORIGEM,T1.TP_CONS_PREV,T1.TP_ALOC_LOTE,T1.TP_DESP_PADRAO,T1.ID_G
RADE,
> T1.NAT_DESPESA,T1.TP_ADM_LOTE,T1.PER_REST_ICMS,T1.NIV_REST_ICMS,
> T1.CONCENTRACAO,T1.RENDIMENTO,T1.NIVEL,T1.TIPO_INSP,T1.PERC_NQA,
> T1.PER_REST_FORA,T1.NIV_REST_FORA,T1.NR_ITEM_DCR,T1.TX_IMPORTACAO,
>
T1.PRIORIDADE,T1.TIPO_SCHED,T1.ATU_CONF,T1.ISENCAO_IMPORT,T1.RESUMO_MP
,
>
T1.IND_SERV_MAT,T1.COD_REFER,T1.NIV_MPS,T1.CALC_CONS_PREV,T1.VAR_TRANS
F,
>
T1.VAR_REP,T1.VAR_REQ_MAIOR,T1.VAR_REQ_MENOR,T1.RV_CODIGO,T1.DE_CODIGO
_PRIN,
>
T1.CONTR_PLAN,T1.CALC_LEAD_TIME,T1.DEC_CONV_FMCOML,T1.FASE_MEDIO,T1.RE
VISAO,
>
T1.U##COD_AUXILIAR,T1.COD_AUXILIAR,T1.VAR_MOB_MAIOR,T1.VAR_MOB_MENOR,
> T1.IT_DEMANDA,T1.PERC_DEMANDA,T1.U##CD_FOLH_LOTE,T1.CD_FOLH_LOTE,
> T1.U##CD_FOLH_ITEM,T1.CD_FOLH_ITEM,T1.VALOR_IPI_BEB,T1.ESP_BEB,
> T1.ENQUAD_BEB,T1.TIPO_RECIP_BEB,T1.CAPAC_RECIP_BEB,T1.ROT_QUANT,
>
T1.ROT_REVIS,T1.ROT_REFER,T1.ALT_REFER,T1.TIPO_ATP,T1.FATOR_REAJ_ICMS,
> T1.INCENTIVADO,T1.PREFIXO_LOTE,T1.NR_ULT_PECA,T1.TP_LOTE_MINIMO,
>
T1.TP_LOTE_MULTIPLO,T1.TP_LOTE_ECONOM,T1.QUANT_PACOTE,T1.CONTA_APLICAC
AO,
> T1.U##COD_LOCALIZ,T1.COD_LOCALIZ,T1.SIT_ALOC,T1.CD_TAG,T1.COD_TAX,
>
T1.COD_TAX_SERV,T1.U##DESC_ITEM,T1.DESC_ITEM,T1.NARRATIVA,T1.LOG_CARAC
_TEC,
>
T1.COD_LISTA_DESTINO,T1.LOG_ATUALIZ_VIA_MMP,T1.VL_VAR_MAX,T1.VL_VAR_MI
N,
>
T1.QT_VAR_MAX,T1.QT_VAR_MIN,T1.REPORTE_GGF,T1.COD_IMAGEM,T1.CD_REFEREN
CIA,
>
T1.CONV_TEMPO_SEG,T1.CHAR_1,T1.CHAR_2,T1.DEC_1,T1.DEC_2,T1.INT_1,T1.IN
T_2,
> T1.LOG_1,T1.LOG_2,T1.DATA_1,T1.DATA_2,T1.IND_CONFPRODCOM,
> T1.NIVEL_APR_REQUIS,T1.NIVEL_APR_SOLIC,T1.NIVEL_APR_MANUT,
> T1.NIVEL_APR_COMPRA,T1.IND_PREV_DEMANDA,T1.IND_CALC_META,
> T1.VAL_FATOR_CUSTO_DIS,T1.QTD_REFER_CUSTO_DIS,T1.QTD_BATCH_PADRAO,
>
T1.LOG_UTILIZA_BATCH_PADRAO,T1.IND_QUOTAS,T1.NR_PONTOS_QUOTAS,T1.CHECK
_SUM,
>
T1.NUM_ID_ITEM,T1.IND_REFUGO,T1.LOG_NECESSITA_LI,T1.PROGRESS_RECID
> FROM
> EMS204PORO8P932MIND.MOVTO_ESTOQ T0,EMS204PORO8P932IND.ITEM T1
WHERE
> ((T0.DT_TRANS BETWEEN :1 AND :2 AND T0.ESP_DOCTO != :3 AND
> upper(T0.COD_PROG_ORIG) != upper(:4) AND T0.U##COD_ESTABEL >=
upper(:5) AND
> T0.U##COD_ESTABEL <= upper(:6) AND T0.U##IT_CODIGO >= upper(:7)
AND
> T0.U##IT_CODIGO <= upper(:8) AND T0.U##COD_DEPOS >= upper(:9) AND
> T0.U##COD_DEPOS <= upper(:10) AND T0.U##COD_LOCALIZ >= upper(:11)
AND
> T0.U##COD_LOCALIZ <= upper(:12) AND T0.NR_ORD_PRODU >= :13 AND
> T0.NR_ORD_PRODU <= :14 AND T0.U##IT_CODIGO = T1.U##IT_CODIGO AND
> T1.U##FM_CODIGO >= upper(:15) AND T1.U##FM_CODIGO <= upper(:16)
AND
> T1.GE_CODIGO >= :17 AND T1.GE_CODIGO <= :18))
>
> call count cpu elapsed disk query
current rows
> ------- ------ -------- ---------- ---------- ---------- ----------
----------
> Parse 0 0.00 0.00 0 0
0 0
> Execute 8 0.00 0.03 0 0
0 0
> Fetch 6531 20.87 21.60 0 1923711
0 6531
> ------- ------ -------- ---------- ---------- ---------- ----------
----------
> total 6539 20.87 21.63 0 1923711
0 6531
> Misses in library cache during parse: 0
> Optimizer goal: RULE
> Parsing user id: 120
>
>
> Obrigado,
>
> De:oracle_br@yahoogrupos.com.br
>
> Para:oracle_br@yahoogrupos.com.br,"usuarios_oracle"
[EMAIL PROTECTED]
>
> Cópia:
>
> Data:Mon, 2 Jul 2007 14:19:52 -0300
>
> Assunto:RES: [oracle_br] TRACE / TKPROF 8i
>
> Esse comando deve funcionar:
>
> execute SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION
(<sid>,<serial#>,true);
>
> Att.
>
> Julio.
>
> _____
>
> De: oracle_br@yahoogrupos.com.br
[mailto:[EMAIL PROTECTED] Em
> nome de terra_banco
> Enviada em: segunda-feira, 2 de julho de 2007 12:44
> Para: oracle_br; usuarios_oracle
> Assunto: [oracle_br] TRACE / TKPROF 8i
>
> Srs, boa tarde.
>
> Tenho um banco na versao abaixo:
>
> SQL> SELECT * FROM V$VERSION
> 2 ;
> BANNER
> ----------------------------------------------------------
> Oracle8i Release 8.1.7.0.0 - Production
> PL/SQL Release 8.1.7.0.0 - Production
> CORE 8.1.7.0.0 Production
> TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
> NLSRTL Version 3.4.1.0.0 - Production
> SQL>
>
> Preciso pegar um trace, do processo do usuario ESP, abaixo:
>
> SID SERIAL# USERNAME USER# TERMINAL
> ---------- ---------- ------------------------------ ----------
> -------------
> 66 1257 EMS204PORO8P932UNI 120 ASPBRFINTI01
> 67 75 EMS204PORO8P932FFT 126 ASPBRFINTI01
> 68 2702 EMS204PORO8P932ESP 124 ASPBRFINTI01
>
> Estou tentando inicializar o trace e estou recebendo o erro,
conforme
> abaixo:
> Alguem poderia me auxiliar no processo de gerar um TRACE, e depois
o TKPROF,
> afim de conseguir visualizar as querys que estao sendo geradaso com
esse
> processo?
>
> SQL>
> SQL> begin
> 2 -- ativa trace
> 3 DBMS_MONITOR.session_trace_enable(session_id => 68, serial_num =>
2702);
> 4 end;
> 5 /
> DBMS_MONITOR.session_trace_enable(session_id => 68, serial_num =>
2702);
> *
> ERROR at line 3:
> ORA-06550: line 3, column 4:
> PLS-00201: identifier 'DBMS_MONITOR.SESSION_TRACE_ENABLE' must be
declared
> ORA-06550: line 3, column 4:
> PL/SQL: Statement ignored
>
> SQL>
>
> Muito obrigado a todos(as).
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>