- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 16 anos, 3 meses atrás por
ramasine.
-
AutorPosts
-
20 de novembro de 2009 às 3:22 pm #91032
ramasine
ParticipanteGalera,
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 – #2520 de novembro de 2009 às 3:37 pm #91034ramasine
ParticipanteO 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 ROWIDNão seria melhor utilizar o fast refresh ??
21 de novembro de 2009 às 6:33 pm #91049vieri
Participantesuas 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.
22 de novembro de 2009 às 8:45 pm #91056ramasine
ParticipanteVieri, 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
23 de novembro de 2009 às 6:42 pm #91065vieri
Participanteoutra 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
23 de novembro de 2009 às 7:38 pm #91066ramasine
ParticipanteUsando 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..
30 de novembro de 2009 às 9:40 pm #91227ramasine
ParticipanteAlguem com mais alguma ideia ou luz ?
-
AutorPosts
- Você deve fazer login para responder a este tópico.