Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #91032
    ramasine
    Participante

      Galera,

      Podem dar uma ajuda, tenho a MView abaixo, ela demroa cerca de duas horas para fazer o refresh…tem como de alguma maneira ela diminuir esse tempo??

      A bd é 9.2.0.8 e é um DW…

      Segue o codigo dela e o plano de execução!!

      SELECT /*+ PARALLEL(FAC_TAXAS, 4) */
      COD_DIA COD_DIA_ACT,
      COD_CLIENTE COD_SA,
      COD_SIT_ACTIVIDADE COD_SIT_ACT,
      COD_TIPO_TRABALHO COD_TIPO_TRAB,
      COD_TIPO_ACTIVIDADE COD_TIPO_ACT,
      COD_AGENTE COD_AGEN,
      SEQ_TRAB SEQ_TRAB,
      COD_MOT_ALTERACAO COD_MOT_ALTER,
      COD_MOT_CANCELAMENTO COD_MOT_CANC,
      COD_MOT_DESLIGAMENTO COD_MOT_DESL,
      COD_COMPONENTE COD_COMP,
      COD_CELULA COD_CEL_HIST,
      COD_SEGMENTO COD_SEGM_CA_SA_HIST,
      COD_MODO_PAGAMENTO COD_MOD_PAG_HIST,
      DAT_EFEITO DAT_EFT_ACT,
      COD_PREDIO COD_PRED_HIST,
      COD_CAMPANHA COD_PROM,
      COD_AGENTE_ACT_ANT COD_AGEN_ACT_ANT,
      NUM_DIAS_ACT_ANT NUM_DIA_ACT_ANT,
      COD_TEC_EXEC COD_TECN_EXEC,
      COD_AREA_TEC_EXEC COD_AREA_TEC_EXEC,
      COD_MES_FECHO COD_MES_FECHO,
      DT_PRIM_ENT DAT_VENDA_ACT,
      COD_PACK COD_PAC,
      COD_UTIL_ORIGEM COD_USER_ORIG,
      COD_UTIL_RESOLUCAO COD_USER_RESOL,
      COD_DEPART_ORIGEM COD_DPTM_ORIG_HIST,
      COD_DEPART_RESOLUCAO COD_DPTM_RESOL_HIST,
      DAT_AGENDADO DAT_REALIZ_AGEND,
      DAT_AGENDAMENTO DAT_AGEND_ACT,
      DAT_COMPLETE DAT_REALIZ_ACT,
      SK_MOT_NAO_AGEND COD_MOT_NAO_AGEND,
      COD_ZONA COD_ZONA_HIST,
      COD_BA COD_BA,
      DT_PRIM_ENT DAT_ENTR_ACT,
      COD_SERVICO COD_SUB_AREA_NEG,
      COD_EQUIPAMENTO COD_EQUIP_ASSOC,
      NUM_EQUIP NUM_EQUIP_ASSOC,
      COD_BENEFICIO COD_BENEF,
      COD_SUBSIT_ACTIVIDADE COD_SUBSIT_ACT,
      DT_PRIM_ENT COD_DAT_INI_PEND,
      FLG_ADMIN COD_ACT_ADM,
      COD_MOT_RECOLHA_EQUIP COD_MOT_RECO_EQUIP,
      COD_MOT_ALT_ESTADO_ORDER COD_MOT_ALTER_EST_ENC,
      COD_MOTIVO_ORDER COD_MOT_ENC,
      COD_FLG_ORDER_BLOQ COD_FLG_ENC_BLOQ,
      COD_SIT_ORDER COD_SIT_ENC,
      COD_SUBSIT_ORDER COD_SUB_SIT_ENC,
      COD_MES_FECHO_ENTRADA COD_MES_FECHO_ENTR,
      DECODE (COD_SIT_ACTIVIDADE,’P’, TO_DATE (‘30123500’, ‘DDMMYYYY’),COD_DIA)
      COD_DAT_FIM_PEND,
      COD_AGENTE_ORDER COD_AGEN_ENC,
      COD_AGEN_ICM COD_AGEN_ICM,
      DT_ENTRADA_ORDER,
      COD_TIPO_GRADE_ACT,
      ITEM_ID_ORIGEM,
      ITEM_ID_DESTINO,
      FLG_MUD_RES_DESACT,
      FLG_MUD_RES_ACT,
      SEQ_TRAB_MUD_RES,
      COD_ORDER_ITEM,
      COD_INTEGRATION_ID COD_INTEGRATION_ID,
      COD_TIPO_GRADE_ROL COD_TIPO_GRADE_ROL,
      COD_COMPONENTE_DIN_GRADE COD_COMPONENTE_DIN_GRADE,
      COD_INTEGRATION_ID_DIN_GRADE COD_INTEGRATION_ID_DIN_GRADE,
      COD_DIN_GRADE COD_DIN_GRADE,
      COD_FLG_ENC_FLAT COD_FLG_ENC_FLAT,
      COD_EQUIP_ASSOC_ENC COD_EQUIP_ASSOC_ENC,
      COD_EQUIP_CARTAO_ASSOC_ENC COD_CARTAO_ASSOC_ENC,
      COD_EQUIP_TV_ASSOC_ENC COD_EQUIP_TV_ASSOC_ENC,
      COD_EQUIP_NET_ASSOC_ENC COD_EQUIP_NET_ASSOC_ENC,
      COD_EQUIP_VOZ_ASSOC_ENC COD_EQUIP_VOZ_ASSOC_ENC,
      DAT_CHKIN_ACTV DAT_CHKIN_ACTV,
      COD_AGEN_ALTER COD_AGEN_ALTER,
      COD_ACCAO_ADSL COD_ACCAO_ADSL,
      COD_FLG_ADSL_ACT COD_FLG_ADSL_ACT,
      COD_FLG_ADSL_DEACT COD_FLG_ADSL_DEACT,
      SEQ_TRAB_ADSL SEQ_TRAB_ADSL,
      COD_TIPO_GRADE_3 COD_TIPO_GRADE_3,
      COD_DIN_GRADE_3 COD_DIN_GRADE_3,
      COD_COMP_DIN_GRADE_3 COD_COMP_DIN_GRADE_3,
      COD_INT_ID_DIN_GRADE_3 COD_INT_ID_DIN_GRADE_3,
      COD_ORDER COD_ORDER,
      NUM_SERIE_EQUIP_ANT NUM_SERIE_EQUIP_ANT,
      MSISDN MSISDN,
      MSISDN_ANT MSISDN_ANT,
      ICCID ICCID,
      ICCID_ANT ICCID_ANT,
      ICCID_EXT ICCID_EXT,
      COD_FLG_TDC_SP COD_FLG_TDC_SP,
      COD_DIREC_RCA_ORIG COD_DIREC_RCA_ORIG,
      COD_DIREC_RCA_RESOL COD_DIREC_RCA_RESOL,
      NUM_TEL_HOME_ZONE,
      NUM_TEL_ANT_HOME_ZONE,
      INTEGRATION_ID_AGREG,
      IDW_TIPO_AGREG_COMP
      FROM edwhrp.FAC_TAXAS
      WHERE COD_TIPO_ACTIVIDADE IN (‘A’, ‘R’, ‘D’)
      AND (COD_SIT_ACTIVIDADE = ‘P’ OR (COD_SIT_ACTIVIDADE IN (‘X’, ‘CP’)
      AND DT_PRIM_ENT <> COD_DIA));

      Plan
      SELECT STATEMENT CHOOSECost: 169,19 Bytes: 15.228.177.256 Cardinality: 28.096.268
      2 PARTITION RANGE ALL PARALLEL_COMBINED_WITH_PARENT :Q4145298000Partition #: 1 Partitions accessed #1 – #25
      1 TABLE ACCESS FULL PARALLEL_TO_SERIAL EDWHRP.FAC_TAXAS :Q4145298000Cost: 169,19 Bytes: 15.228.177.256 Cardinality: 28.096.268 Partition #: 1 Partitions accessed #1 – #25

      #91034
      ramasine
      Participante

        O codigo de criação da view é esse:

        CREATE MATERIALIZED VIEW EDWHRP.VM_FAC_ACT_PEND
        TABLESPACE D4DWH
        PCTUSED 40
        PCTFREE 10
        INITRANS 2
        MAXTRANS 255
        STORAGE (
        INITIAL 160000K
        NEXT 160000K
        MINEXTENTS 1
        MAXEXTENTS UNLIMITED
        PCTINCREASE 0
        FREELISTS 1
        FREELIST GROUPS 1
        BUFFER_POOL DEFAULT
        )
        NOCACHE
        NOLOGGING
        PARALLEL ( DEGREE 4 INSTANCES 1 )
        BUILD DEFERRED
        USING INDEX
        TABLESPACE TDWH
        PCTFREE 10
        INITRANS 2
        MAXTRANS 255
        STORAGE (
        INITIAL 80K
        MINEXTENTS 1
        MAXEXTENTS UNLIMITED
        PCTINCREASE 0
        BUFFER_POOL DEFAULT
        )
        REFRESH COMPLETE ON DEMAND
        WITH ROWID

        Não seria melhor utilizar o fast refresh ??

        #91049
        vieri
        Participante

          suas condições estão matando o uso de índices.

          Quando o plano da execução da mview fica ruim,
          consequentemente seu refresh fica uma M.

          Acho que valeria a pena tentar realizar está
          carga via procedure para poder usufruir de
          tabelas temporárias para otimizar o select.

          Outro detalhe é o paralelismo porque estã tão alto (4) ?

          baixe para 2 e ve se o tempo melhora ou piora.

          #91056
          ramasine
          Participante

            Vieri, antes de mais nada obrigado!!!

            Cara, forcei o uso dos índices e o FULL SCAN da tabela foi finalizado, mas ganhei um FULL INDEX SCAN….

            Estou vendo se consigo alterar o filtro abaixo..

            FROM edwhrp.FAC_TAXAS
            WHERE COD_TIPO_ACTIVIDADE IN (‘A’, ‘R’, ‘D’)
            AND (COD_SIT_ACTIVIDADE = ‘P’ OR (COD_SIT_ACTIVIDADE IN (‘X’, ‘CP’)
            AND DT_PRIM_ENT COD_DIA));

            Vou testar tb as suas sugestões do paralelismo…

            Abs

            #91065
            vieri
            Participante

              outra opção seria usar master log’s

              mas existe varios fatores a analisar para ver se vale a pena.

              http://download.oracle.com/docs/cd/B193 … s_6003.htm

              Acho que vc já havia pensado nisso quando citou o fast refresh.

              Ficou mais rápido com IFS doque com o TFS ?

              []s

              #91066
              ramasine
              Participante

                Usando apenas o hint:

                /*+ index (FAC_TAXAS) */ no select,

                o plano de:

                SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

                PLAN_TABLE_OUTPUT


                | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Pstart| Pstop |

                | 0 | SELECT STATEMENT | | 1789K| 924M| 235K (3)| | |
                | 1 | CONCATENATION | | | | | | |
                | 2 | TABLE ACCESS BY GLOBAL INDEX ROWID| FAC_TAXAS | 1424K| 736M| 187K (3)| ROWID | ROW L |
                |* 3 | INDEX SKIP SCAN | I_FAC_TAXAS_ADMIN | 1425K| | 53583 (3)| | |
                |* 4 | TABLE ACCESS BY GLOBAL INDEX ROWID| FAC_TAXAS | 1424K| 736M| 187K (3)| ROWID | ROW L |

                |* 5 | INDEX FULL SCAN | I_FAC_TAXAS_ADMIN | 1425K| | 53583 (3)| | |

                PLAN_TABLE_OUTPUT

                Predicate Information (identified by operation id):

                3 – access(“FAC_TAXAS”.”COD_SIT_ACTIVIDADE”=’P’)
                filter(“FAC_TAXAS”.”COD_SIT_ACTIVIDADE”=’P’ AND (“FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’A’ OR
                “FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’D’ OR “FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’R’))
                4 – filter(“FAC_TAXAS”.”DT_PRIM_ENT””FAC_TAXAS”.”COD_DIA”)
                5 – filter((“FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’A’ OR “FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’D’ OR
                “FAC_TAXAS”.”COD_TIPO_ACTIVIDADE”=’R’) AND (“FAC_TAXAS”.”COD_SIT_ACTIVIDADE”=’CP’ OR
                “FAC_TAXAS”.”COD_SIT_ACTIVIDADE”=’X’) AND LNNVL(“FAC_TAXAS”.”COD_SIT_ACTIVIDADE”=’P’))

                E a cardinalidade cai de 28.494.270 para 1.789.187, depois da aplicação do hint!

                Sugeri tb alterar o método para FAST_REFRESH, mas a tabela não tem PK..se quiserem terão q alterar….

                Vou ver se consigo uma janela para a execução do teste..

                #91227
                ramasine
                Participante

                  Alguem com mais alguma ideia ou luz ?

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.