› Fóruns › Banco de dados Oracle › tunning mview › tunning mview
O problema é que se eu criar a tabela
na mão com um create table as select(mesmo select da mview),a table é criada
em 7seg, se eu ficar um truncate+insert
roda em 8seg,
mas quando crio a mview, ou peço um dbms_mview.refresh
ele leva 2 horas!!
E habilitando um trace após 30min de execução,
ele fica paradão no parse do SQL…
…
STAT #16 id=1 cnt=0 pid=0 pos=1 obj=0 op=’FOR UPDATE (cr=1 pr=0 pw=0 time=17 us)’
STAT #16 id=2 cnt=0 pid=1 pos=1 obj=165 op=’TABLE ACCESS CLUSTER MLOG$ (cr=1 pr=0 pw=0 time=12 us)’
STAT #16 id=3 cnt=0 pid=2 pos=1 obj=164 op=’INDEX UNIQUE SCAN I_MLOG# (cr=1 pr=0 pw=0 time=7 us)’
PARSING IN CURSOR #17 len=312 dep=1 uid=0 oct=6 lid=0 tim=1213200456455966 hv=2958118544 ad=’7d8b6650′
update /*+ BYPASS_UJVC */ ( select s.status status from snap$ s, snap_reftime$ r where s.sowner = r.sowner and s.vname = r.vname and r.mowner = :1 and r.master = :2 and s.mlink IS NULL and bitand(s.status,16) = 0 and r.instsite =0 and s.instsite =0) v set status = status + 16
END OF STMT
PARSE #17:c=0,e=179,p=0,cr=0,cu=2,mis=1,r=0,dep=1,og=4,tim=1213200456455964
EXEC #17:c=2000,e=1578,p=0,cr=5,cu=0,mis=1,r=0,dep=1,og=4,tim=1213200456457580
STAT #17 id=1 cnt=0 pid=0 pos=1 obj=0 op=’UPDATE SNAP$ (cr=5 pr=0 pw=0 time=232 us)’
STAT #17 id=2 cnt=0 pid=1 pos=1 obj=220 op=’TABLE ACCESS BY INDEX ROWID SNAP_REFTIME$ (cr=5 pr=0 pw=0 time=223 us)’
STAT #17 id=3 cnt=15 pid=2 pos=1 obj=0 op=’NESTED LOOPS (cr=4 pr=0 pw=0 time=1017 us)’
STAT #17 id=4 cnt=7 pid=3 pos=1 obj=212 op=’TABLE ACCESS BY INDEX ROWID SNAP$ (cr=2 pr=0 pw=0 time=158 us)’
STAT #17 id=5 cnt=7 pid=4 pos=1 obj=218 op=’INDEX SKIP SCAN I_SNAP2 (cr=1 pr=0 pw=0 time=125 us)’
STAT #17 id=6 cnt=7 pid=3 pos=2 obj=221 op=’INDEX RANGE SCAN I_SNAP_REFTIME1 (cr=2 pr=0 pw=0 time=47 us)’
STAT #21 id=1 cnt=0 pid=0 pos=1 obj=0 op=’DELETE MV_PRECO_ITEM_PRODUTO_TESTE (cr=3 pr=0 pw=0 time=26 us)’
STAT #21 id=2 cnt=0 pid=1 pos=1 obj=158435 op=’MAT_VIEW ACCESS FULL MV_PRECO_ITEM_PRODUTO_TESTE (cr=3 pr=0 pw=0 time=21 us)’
PARSING IN CURSOR #21 len=1009 dep=1 uid=67 oct=2 lid=67 tim=1213200456467854 hv=336269635 ad=’165e8210′
INSERT /*+ BYPASS_RECURSIVE_CHECK */ INTO “CEV”.”MV_PRECO_ITEM_PRODUTO_TESTE” SELECT distinct
p.COD_PRODUTO_INTERNO,
t.COD_FILIAL,
t.DAT_HORA_TABELA,
t.COD_SKU_INTERNO,
t.VAL_PRECO_TABELA,
t.COD_TIPO_ANUNCIO,
t.VAL_PRECO_DE,
t.IND_PRECO_DE_LOJA,
t.PCT_JUROS_SECUNDARIO,
t.VAL_PRECO_LOJA,
t.VAL_DESCONTO_A_VISTA,
t.PCT_DESCONTO_A_VISTA,
t.COD_SKU_BRINDE,
t.QTD_SKU_BRINDE,
t.QTD_PARCELA_EXIBICAO,
t.PCT_JUROS_EXIBICAO,
t.VAL_PARCELA_EXIBICAO,
t.VAL_DESCONTO_PARCELAMENTO,
t.PCT_DESCONTO_PARCELAMENTO,
t.VAL_PRECO_A_VISTA,
t.VAL_DESCONTO_BOLETO,
t.PCT_DESCONTO_BOLETO
FROM
cev.TB_PRECO_ITEM t , cev.TB_SKU sku, cev.TB_PRODUTO p
where sku.COD_SKU_INTERNO = t.COD_SKU_INTERNO
and p.COD_PRODUTO_INTERNO = sku.COD_PRODUTO_INTERNO
and sku.COD_CLASSE IN (‘A’, ‘B’, ‘I’, ‘L’)
AND (t.COD_SKU_INTERNO, t.DAT_HORA_TABELA) IN (SELECT COD_SKU_INTERNO, MAX(DAT_HORA_TABELA)
FROM cev.TB_PRECO_ITEM
GROUP BY COD_SKU_INTERNO)
END OF STMT
PARSE #21:c=9998,e=10061,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=1,tim=1213200456467849
repare o time no parse…
o refresh fica paradão ai..
isso ta me cheirando a BUG de mview, ou limitação não tratada
com exceção, ficando em loop…
oque acham?