Re: Problem With Fast Refresh Of Materialized View
Date: Mon, 8 Jun 2015 21:45:49 +0200
Message-ID: <CA+S=qd1qBJMnzNua4NPZJL5b+SLhqN6_ERKx0LKWf8qEJmubdA_at_mail.gmail.com>
Hi David
The column list in parentheses in the beginning of your CREATE TABLE does not include the three ROWID's.
Either include three ROWID's (rowid1, rowid2, rowid3) in that column list. Or just remove the column list - then columns will be autonamed from the columns/aliases of the query.
Regards
Kim Berg Hansen
http://dspsd.blogspot.com
kibeha_at_gmail.com
_at_kibeha
On Mon, Jun 8, 2015 at 9:32 PM, David Barbour <david.barbour1_at_gmail.com> wrote:
> Oracle 11.2.0.3 RHEL 6.3
>
> Trying to create a materialized view with fast refresh capabilities.
> Created materialized view logs on the base tables with rowid.
>
> CREATE MATERIALIZED VIEW "SAPR3"."V_IBINVALUES_F"
> ("MANDT", "SYMBOL_ID", "ATZIS", "ASSTYP", "IN_RECNO", "INSTANCE", "VALFR",
> "VALTO", "OBJECTTYP", "OBJNR", "STATUS", "CUCOCNT", "ST_VALFR", "ST_VALTO",
> "ROOT")
> TABLESPACE PSAPBTABD
> BUILD IMMEDIATE
> AS
> SELECT T1."MANDT", T1."SYMBOL_ID", T1."ATZIS", T1."ASSTYP", T1."IN_RECNO",
> T2."INSTANCE", T2."VALFR", T2."VALTO", T2."OBJECTTYP", T2."OBJNR",
> T2."CSTATUS", T2."CUCOCNT",
> T3."VALFR", T3."VALTO", T3."ROOT"
> FROM "IBINVALUES" T1, "IBIN" T2, "IBST" T3
> WHERE T2."MANDT" = T1."MANDT"
> AND T2."IN_RECNO" = T1."IN_RECNO"
> AND T3."MANDT" = T1."MANDT"
> AND T3."INSTANCE" = T2."INSTANCE"
> AND ( T1."ASSTYP" = ' ' OR T1."ASSTYP" = 'F' )
> /
> Materialized view created.
>
> Then check the requirements against mv_capabilities:
>
>
> SQL> exec dbms_mview.explain_mview(mv=>'V_IBINVALUES_F',stmt_id=>'100');
>
> PL/SQL procedure successfully completed.
>
> SQL> commit;
>
> Commit complete.
>
> 1 select CAPABILITY_NAME, POSSIBLE, MSGTXT, RELATED_TEXT from
> mv_capabilities_table
> 2 where capability_name like 'REFRESH%'
> 3* and capability_name not like '%PCT%'
> SQL> /
>
> CAPABILITY_NAME P MSGTXT
> RELATED_TEXT
> ------------------------------ -
> ----------------------------------------------------------------------
> ----------------------------------------
> REFRESH_COMPLETE Y
> REFRESH_FAST N
> REFRESH_FAST_AFTER_INSERT N the SELECT list does not have the rowids
> of all the detail tables T3
> REFRESH_FAST_AFTER_ONETAB_DML N see the reason why
> REFRESH_FAST_AFTER_INSERT is disabled
> REFRESH_FAST_AFTER_ANY_DML N see the reason why
> REFRESH_FAST_AFTER_ONETAB_DML is disabled
>
> Okay - so I include the rowids - or at least I try:
>
> SQL> drop materialized view V_IBINVALUES_F;
>
> Materialized view dropped.
>
> SQL> CREATE MATERIALIZED VIEW "SAPR3"."V_IBINVALUES_F"
> ("MANDT", "SYMBOL_ID", "ATZIS", "ASSTYP", "IN_RECNO", "INSTANCE", "VALFR",
> "VALTO", "OBJECTTYP", "OBJNR", "STATUS", "CUCOCNT", "ST_VALFR", "ST_VALTO",
> "ROOT")
> 2 3 TABLESPACE PSAPBTABD
> 4 BUILD IMMEDIATE
> 5 AS
> 6 SELECT
> 7 T1.ROWID, T2.ROWID, T3.ROWID,
> 8 T1."MANDT", T1."SYMBOL_ID", T1."ATZIS", T1."ASSTYP", T1."IN_RECNO",
> 9 T2."INSTANCE", T2."VALFR", T2."VALTO", T2."OBJECTTYP", T2."OBJNR",
> T2."CSTATUS", T2."CUCOCNT",
> 10 T3."VALFR", T3."VALTO", T3."ROOT"
> FROM "IBINVALUES" T1, "IBIN" T2, "IBST" T3
> 11 12 WHERE T2."MANDT" = T1."MANDT"
> 13 AND T2."IN_RECNO" = T1."IN_RECNO"
> 14 AND T3."MANDT" = T1."MANDT"
> 15 AND T3."INSTANCE" = T2."INSTANCE"
> 16 AND ( T1."ASSTYP" = ' ' OR T1."ASSTYP" = 'F' )
> 17 /
> T2."INSTANCE", T2."VALFR", T2."VALTO", T2."OBJECTTYP", T2."OBJNR",
> T2."CSTATUS", T2."CUCOCNT",
>
> *
> ERROR at line 9:
> ORA-01730: invalid number of column names specified
>
> The little asterisk is under the T2.CUCOCNT selection.
>
> It's Monday. What am I missing here?
>
-- http://www.freelists.org/webpage/oracle-lReceived on Mon Jun 08 2015 - 21:45:49 CEST