Chiappa, Obrigado pelo retorno. Com certeza irei verificar melhor cada processo desses nos devidos manuais, mas ja me ajudou bastante com o Overview passado.
Abraço a todos. De:[email protected] Para:[email protected] Cópia: Data:Tue, 03 Jul 2007 13:06:20 -0000 Assunto:Re:RES: [oracle_br] TRACE / TKPROF 8i 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 [email protected], "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:[email protected] > > Para:[email protected],"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: [email protected] [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] > [As partes desta mensagem que não continham texto foram removidas]
