Oracle Materialized view... Auto-refresh

Hello

I want to refresh my view daily Oracle Materilized @ night mi... I am a new Bee and need your help in detail

Thank you

DBMS_JOB
DBMS_SCHEDULER

Tags: Database

Similar Questions

  • Materialized view to refresh force

    Hello
    on orcl1, I created:
    CREATE MATERIALIZED VIEW mv_emp_pk
            REFRESH FAST START WITH SYSDATE 
         NEXT  SYSDATE + 1/48
         WITH PRIMARY KEY 
         AS SELECT * FROM scott.emp@remote;
    And on orcl2:
    insert into emp (empno,ename) values (2323,'somename');
    SQL> select distinct ename from emp;
    
    ENAME
    ----------
    ALLEN
    JONES
    FORD
    CLARK
    MILLER
    somename
    SMITH
    WARD
    MARTIN
    SCOTT
    TURNER
    15 rows selected.
    But after 40 minutes on orcl1:
    SQL> select ename from mv_emp_pk;
    
    ENAME
    ----------
    SMITH
    ALLEN
    WARD
    JONES
    MARTIN
    BLAKE
    CLARK
    SCOTT
    KING
    TURNER
    14 rows selected.
    Why mv_emp_pk is not updated?
    Thank you.
    PS:
    SQL > select elements, to_char (next_date, ' DD-MON-RR hh: mi AM') of user_jobs;

    WHAT
    -------------------------------------------------------------------------------
    TO_CHAR (NEXT_DATE,
    ------------------
    DBMS_REFRESH. Refresh ("" SCOTT"." (MV_EMP_PK"');
    JUNE 19, 10 22:40

    How can I force the materialized view to refresh?
    Thank you.

    How can I force the materialized view to refresh?

    Run DBMS_SNAPSHOT. REFRESH ('MV_EMP_PK', 'c');

  • Materialized view automatically refresh? If the updating of the means how?

    Materialized view refresh automatically? If the updating of the means how?

    It is expected is not to ask questions of the basic documentation.

    Refresh Options

    When you define a materialized view, you can specify three update options: how to refresh, what kind of update and can trust constraints be used. If not specified, default values are considered as ON DEMAND , FORCE , and ENFORCED forced respectively.

    The two execution modes are ON COMMIT and ON DEMAND . According to the materialized view, you create, some options may be unavailable. Update modes are described in table 8-4 .

    Table 8-4 Modes of discount

    Refresh the Mode Description

    ON COMMIT

    Refresh product automatically when a transaction which changed one of the paintings of the materialized view's retail is committed. This can be specified as the materialized view is quickly updatable (in other words, no complex). The ON COMMIT privilege is required to use this mode.

    ON DEMAND

    Refresh occurs when a user manually executes one of the procedures available refresh contained in the DBMS_MVIEW package ( REFRESH , REFRESH_ALL_MVIEWS , REFRESH_DEPENDENT ).

    http://docs.Oracle.com/CD/B28359_01/server.111/b28313/basicmv.htm#i1006193

  • materialized view full refresh much slower that recreate

    Hello!

    We use the view materialized for our DWH, which freshen every day to demand and full. I noticed that after some time refreshing take very long materialized view (1 h), recreating the view materialized and refreshing it at the same time just takes a few minutes. The result is exactly the same thing.
    Can someone explain to me why this is the case? And is there a better way to recreate materialized view that copying and running the entire SQL statement?

    Thanks for your help!

    Edited by: 890408 26 March 2012 23:29

    Since 10g or 10 g 2, the default behavior for a refreshment FULL of a MV is DELETE and INSERT.
    (In 9i, it was TRUNCATE and INSERT - which was, obviously, faster).
    The advantage with the DELETE and INSERT, is that the data are still visible in the MV while it is updating.

    See Oracle's Support article:
    Refresh complete reading consistency behavior during refresh and refresh complete Performance influenced by the setting of refresh ATOMIC_REFRESH [ID 553464.1]

    Hemant K Collette

  • Materialized view fast refresh option

    Dear all,

    I have a vision materilized which refreshes every 5 minutes and his works well, but one of the base tables has 300 fields and I need this view refresh only when 3 of the fields of 300 has evolved.

    If anyone can help me, I understand that

    The script of my VM is:

    CREATE MATERIALIZED VIEW SCHEMA1. INVM_TARJETADEBITO_SALDOS_VM

    N OCACHE

    LOGGING

    NOCOMPRESS

    NOPARALLEL

    BUILD IMMEDIATE

    REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 5/1440

    WITH THE PRIMARY KEY

    AS

    SELECT CHAMP_1, CHAMP_2, FIELD_3, FIELD_4

    OF SCHEMA1. TABLE_1 has, SCHEMA1. TABLE_2 b

    WHERE a.PK_1 = b.PK_1;

    Best regards

    Diego Nuñez

    > but one of the base tables has 300 fields and I need from this point of view, refresh only when 3 of the fields of 300 has evolved.

    You cannot set this "restriction".  If a row is updated - know if 1 single byte in a column or 300 columns are updated - the line qualifies to be propagated to the MV.

    That you can set is * that * columns are replicated in the MV.

    For the journal of MV, you can also specify which columns are referenced as columns of filter (with the WITH clause).  It is usually of the columns that use the MV and/or is the joining columns for a MV that has a join.

    Hemant K Collette

  • Oracle materialized view more Gateway

    Dear Sir.

    We have microsoft sql server, oracle gateway (11G) and database server (10.2.0.5)

    We already have the complete installation, and it works.

    We create a materialized view in the oracle server to read data from sql server, but the updating of the MV can't wait time
    We are planing to create the view materialized in the oracle gateway server.

    My question is:

    What is the best solution to create the MV in the oracle gateway server?
    I mean I can't download MV only one instance of oracle database.

    Thanks in advance.

    Just to clarify: there is normally no need to install a database on the gateway server. You can create the mview directly in your 10.2.0.5 database.
    If you really want to have another data base which contains the mview then install in the box of gateway to the Oracle database using the version standard edition. There is no need to activate Enterprise Manager or other stuff.
    About the size of the memory, it really depends on the amount of data you have to shoot through the gateway and to select by using the synonym. Therefore, there is no generic answer on sizing.

  • Materialized - view fast refresh connects

    I understand that there is a data change log maintained internally to fast refresh materialized view (CDC) Capture occurs.

    My question is, will this newspaper get purged once the changes are applied to a corresponding materialized view or it will persist with other changes is attached to it?

    What would be the size of the change log for 150 million documents covering 40 base tables?

    Sorry, I haven't used groups of refreshment MV.

  • Materialized Oracle view | Deleting records, Oracle materialized view

    One question reg Materialized views.

    If as part of the interview of the Source database, we remove some (older) recordings, the materialized view will also be updated with the deletion?

    I believe that the answer is Yes. In this case make sure that deletion is not the case?

    Is there anyway that we'll stop MView update to delete records that is inserted once even if we remove the same records in the source DB?

    This is a common scenario, especially with materialized views that summarizes the detail data where you want to keep the summary but not the detail, and it is discussed in the documentation.

    The technique is to make the MV refresh on request, delete the data in the detail tables and the CONSIDER_FRESH procedure to prevent the changes propagating to the MV. You will probably find it in the docs by searching on DBMS_MView.Consider_Fresh. There are a few caveats to note, in my opinion.

  • You want to capture update dates, with trigger on a view to refresh quickly materialized. But trigger on MV consider inserting and updates are inserts only.

    Oracle Database 11 g Enterprise Edition Release 11.2.0.4.0 - 64 bit Production

    PL/SQL Release 11.2.0.4.0 - Production

    CORE Production 11.2.0.4.0

    AMT for Linux: Version 11.2.0.4.0 - Production

    NLSRTL Version 11.2.0.4.0 - Production

    I create the structure of the table like that.

    create table test1 (a primary key, b (2) char number, date c, d varchar2 (10), date of e);

    create table test2 (number of ab, cd (2) tank, date of the ef, gh varchar2 (10), date of the ij, kl varchar2 (100));

    Create materialized view log on test1;

    create materialized view fast refresh test1_v on commit in select * from test1;

    I have create a trigger of the sample

    CREATE OR REPLACE TRIGGER test1_trig

    AFTER INSERT OR UPDATE OR DELETE

    ON test1_v

    FOR EACH LINE

    DECLARE

    lr_test2 test2% ROWTYPE;

    lv_error VARCHAR2 (4000);

    BEGIN

    lr_test2. AB: =: NEW.a;

    lr_test2. CD: =: NEW.b;

    lr_test2. GH: =: NEW.d;

    IF THE INSERTION

    THEN

    lr_test2. EF: = SYSDATE;

    lr_test2.IJ: = SYSDATE;

    lr_test2.KL: = 'INSERT ';

    INSERT INTO test2

    VALUES lr_test2;

    ELSIF UPDATE

    THEN

    lr_test2.IJ: = SYSDATE;

    lr_test2.KL: = 'UPDATE ';

    UPDATE test2 = lr_test2 ab WHERE = LINE: OLD.a;

    ELSIF REMOVAL

    THEN

    DELETE FROM test2

    AB = WHERE: old.a;

    END IF;

    EXCEPTION

    WHILE OTHERS

    THEN

    lv_error: = SQLERRM;

    INSERT INTO XXDOMINO_FG_DATA_LOAD_ERROR

    VALUES ('test1_trig',

    : OLD.a,.

    "test1_trig,"

    LV_ERROR,

    SYSDATE);

    COMMIT;

    END test1_trig;

    /

    So, if check you my code,.

    When I insert EF = SYSDATE, IJ = SYSDATE.

    Update EF is not changed, IJ = SYSDATE.

    So I like to capture their insertion and update dates.

    But if updates or insert arrives on the materialized table. The trigger themselves as an INSERT only.

    So how do you capture the updates?

    I use the statemnet with out merger with performance and also able to capture the update dates.

    CREATE OR REPLACE TRIGGER test1_trig_merge

    AFTER INSERT OR UPDATE OR DELETE

    ON test1_v

    FOR EACH LINE

    DECLARE

    lr_test2 test2% ROWTYPE;

    lv_error VARCHAR2 (4000);

    BEGIN

    IF THE REMOVAL

    THEN

    DELETE FROM test2

        AB = WHERE: old.a;

    ELSIF INSERTION

    THEN

    MERGE INTO test2 one

    B using (SELECT 1 FROM DUAL)

    WE (ab =: new.a)

    WHEN MATCHED

    THEN

    UPDATE the VALUE ab =: NEW.a.

    CD =: NEW.b,

    GH =: NEW.c

    IJ = SYSDATE,

    KL = "Update"

    AB WHERE =: old.a

    WHEN NOT MATCHED

    THEN

    INSERTING VALUES (: NEW.a,)

    : NEW.b,.

    : NEW.c.

    : NEW.d,.

    : NEW.e,.

    "INSERT");

    END IF;

    EXCEPTION

    WHILE OTHERS

    THEN

    lv_error: = SQLERRM;

    INSERT INTO XXDOMINO_FG_DATA_LOAD_ERROR

    VALUES ('test1_trig',

    : OLD.a,.

    "test1_trig,"

    LV_ERROR,

    SYSDATE);

    END test1_trig_merge;

    /

    DISPLAY ERRORS;

  • Pivot can be used in fast refresh materialized view?

    Hi, I have a question about materialized view nested mode fast refresh on Oracle 11 g (It support function of pivot, but oracle 10 g doesn't support).

    When I created, he throws "ORA-12015: cannot create a view fast refresh materialized by a complex query.
    Then I used dbms_mview.explain_mview to see reason, and it tell me the following
    REFRESH_FAST_AFTER_INSERT ' view inline or subquery in LIST not supported for this type of MV.

    Can someone help me, any suggestions will be appreciated
    create table empX as select * from scott.emp;
    alter table empX add constraint PK_empX_empno primary key (empno);
    
    --drop  MATERIALIZED VIEW LOG ON empX;
    CREATE MATERIALIZED VIEW LOG ON empX with rowid, sequence(empno);
    
    --drop MATERIALIZED VIEW mv_empX;
    CREATE MATERIALIZED VIEW mv_empX
    REFRESH FAST START WITH SYSDATE
    NEXT  SYSDATE + 1/1440
    AS   
      select * from
      (
       select rowid emp_rowid, deptno, job, sal from empX
      )
      PIVOT( max(sal) for job IN ('ANALYST' job1, 'CLERK' job2, 'MANAGER' job3));
     
    --select * from mv_capabilities_table
    declare
      lv_sqltext varchar2(4000);
    begin
      execute immediate 'truncate table mv_capabilities_table';
      lv_sqltext := 'select * from
      (
       select deptno, job, sal from empX
      )
      PIVOT( max(sal) for job IN (''ANALYST'' job1, ''CLERK'' job2, ''MANAGER'' job3))
      ';  
      dbms_mview.explain_mview(lv_sqltext,'nested=>TRUE');
      commit;
    end;
    /

    Let me help you...
    I have done following and it run/view updated because I just replaced quickly with a complete word, because there are limitations for quickly updatable views:

    SQL> show user;
    USER is "SCOTT"
    SQL> create table empX as select * from scott.emp;
    
    Table created.
    
    SQL> alter table empX add constraint PK_empX_empno primary key (empno);
    
    Table altered.
    
    SQL>
    SQL> --drop  MATERIALIZED VIEW LOG ON empX;
    SQL> CREATE MATERIALIZED VIEW LOG ON empX with rowid, sequence(empno);
    
    Materialized view log created.
    
    SQL>
    SQL> --drop MATERIALIZED VIEW mv_empX;
    SQL> CREATE MATERIALIZED VIEW mv_empX
      2  REFRESH COMPLETE WITH rowid
      3  START WITH sysdate
      4  NEXT  SYSDATE + 1/1440
      5  AS
      6    select * from
      7    (
      8     select rowid emp_rowid, deptno, job, sal from empX
      9    )
     10    PIVOT( max(sal) for job IN ('ANALYST' job1, 'CLERK' job2, 'MANAGER' job3));
    
    Materialized view created.
    
    SQL> select * from mv_empx;
    
    EMP_ROWID              DEPTNO       JOB1       JOB2       JOB3
    ------------------ ---------- ---------- ---------- ----------
    AAAShcAAEAAAATTAAN         10                  1300
    AAAShcAAEAAAATTAAE         30
    AAAShcAAEAAAATTAAJ         30
    AAAShcAAEAAAATTAAC         30
    AAAShcAAEAAAATTAAA         20                   800
    AAAShcAAEAAAATTAAK         20                  1100
    AAAShcAAEAAAATTAAM         20       3000
    AAAShcAAEAAAATTAAD         20                             2975
    AAAShcAAEAAAATTAAB         30
    AAAShcAAEAAAATTAAI         10
    AAAShcAAEAAAATTAAL         30                   950
    
    EMP_ROWID              DEPTNO       JOB1       JOB2       JOB3
    ------------------ ---------- ---------- ---------- ----------
    AAAShcAAEAAAATTAAF         30                             2850
    AAAShcAAEAAAATTAAG         10                             2450
    AAAShcAAEAAAATTAAH         20       3000
    
    14 rows selected.
    
    SQL> begin
      2  dbms_mview.refresh('SCOTT.mv_empx');
      3  end;
      4  /
    
    PL/SQL procedure successfully completed.
    
    SQL> select * from mv_empx;
    
    EMP_ROWID              DEPTNO       JOB1       JOB2       JOB3
    ------------------ ---------- ---------- ---------- ----------
    AAAShcAAEAAAATTAAN         10                  1300
    AAAShcAAEAAAATTAAE         30
    AAAShcAAEAAAATTAAJ         30
    AAAShcAAEAAAATTAAC         30
    AAAShcAAEAAAATTAAA         20                   800
    AAAShcAAEAAAATTAAK         20                  1100
    AAAShcAAEAAAATTAAM         20       3000
    AAAShcAAEAAAATTAAD         20                             2975
    AAAShcAAEAAAATTAAB         30
    AAAShcAAEAAAATTAAI         10
    AAAShcAAEAAAATTAAL         30                   950
    
    EMP_ROWID              DEPTNO       JOB1       JOB2       JOB3
    ------------------ ---------- ---------- ---------- ----------
    AAAShcAAEAAAATTAAF         30                             2850
    AAAShcAAEAAAATTAAG         10                             2450
    AAAShcAAEAAAATTAAH         20       3000
    
    14 rows selected.
    
    SQL>
    

    So, the answer is Yes, we can use Pivot with Materialized view but:
    1 MV must be full refresh.
    2 oracle version should be 11 g; of course the pivot is available in Oracle 11 g.

    If this answers your question, please close the message, otherwise continue.

    These links may also be of interest:
    http://docs.Oracle.com/CD/B28359_01/server.111/b28313/basicmv.htm#i1007028
    http://docs.Oracle.com/CD/B28359_01/server.111/b28313/basicmv.htm#i1007007

    http://rwijk.blogspot.in/2009/06/fast-refreshable-MATERIALIZED-view.html

    And:

    Please see if (Note: 179466.1 - view to fast refresh materialized diagnose ORA-12015 / complex queries) help.

    Concerning
    Girish Sharma

  • fast refresh on MATERIALIZED VIEW

    Oracle 10 g R2 (10.2.0.5)

    Scott.mv_test CREATE MATERIALIZED VIEW
    Users TABLESPACE
    NOCACHE
    LOGGING
    NOCOMPRESS
    NOPARALLEL
    IMMEDIATE CONSTRUCTION
    REFRESH THE STRENGTH TO DEMAND
    WITH THE PRIMARY KEY
    AS
    Select...

    I this MV, when I do the QUICK refersh as follows, I get the error message

    SQL > execute DBMS_MVIEW. REFRESH ('MV_TEST', 'f');
    DBMS_MVIEW BEGIN. REFRESH ('MV_TEST', 'f'); END;

    *
    ERROR on line 1:
    ORA-12004: QUICK COOLING can be used to view materialized "SCOTT." "" MV_TEST ".
    ORA-06512: at "SYS." DBMS_SNAPSHOT", line 2251
    ORA-06512: at "SYS." DBMS_SNAPSHOT", line 2457
    ORA-06512: at "SYS." DBMS_SNAPSHOT", line 2426
    ORA-06512: at line 1

    But it works with full refresh.

    Is this planned, any help would be appreciated.

    Thank you
    ORA-12004: REFRESH FAST cannot be used for materialized view "string"."string"
    Cause:      The materialized view log does not exist or cannot be used. PCT refresh is also not enabled on the materialized view
    Action:      Use just REFRESH, which will reinstantiate the entire table. If a materialized view log exists and the form of the materialized view allows the use of a materialized view log or PCT refresh is possible after a given set of changes, REFRESH FAST will be available starting the next time the materialized view is refreshed.
    

    http://ORA-12004.ora-code.com/

  • ORA-12052: is unable to fast refresh materialized view string.string

    Hello

    I try to create the same xx and xx, after creating a newspaper, I get this error. Follow my structure:
    create table PEDIDO
    (
      NR_PEDIDO        NUMBER not null,
      DESCRICAO_PEDIDO VARCHAR2(10)
    );
    
    alter table PEDIDO
      add constraint PEDIDO_PK primary key (NR_PEDIDO);
    
    create table ITEM_PEDIDO
    (
      NR_PEDIDO  NUMBER not null,
      NR_PRODUTO VARCHAR2(10) not null
    );
    alter table ITEM_PEDIDO
      add constraint ITEM_PK primary key (NR_PEDIDO, NR_PRODUTO);
    alter table ITEM_PEDIDO
      add constraint PEDIDO_ITEM_FK foreign key (NR_PEDIDO)
      references PEDIDO (NR_PEDIDO) on delete cascade;
    
    create index INDEX_ITEM_PEDIDO on ITEM_PEDIDO (NR_PEDIDO);
    
    insert into pedido
    values (1, 'A');
    
    insert into pedido
    values (2, 'B');
    
    insert into item_pedido
    values (1, 'X');
    
    insert into item_pedido
    values (1, 'Z');
    
    insert into item_pedido
    values (2, 'X');
    
    commit;
    When you try to create, I get the error ORA-12052:
    drop materialized view log on pedido;
    drop materialized view log on item_pedido;
    
    create materialized view log on pedido;
    create materialized view log on item_pedido;
    
    create materialized view mv_pedido_item
    refresh fast as
    select pe.nr_pedido, pe.descricao_pedido, ip.nr_produto
      from pedido pe, item_pedido ip where pe.nr_pedido = ip.nr_pedido;
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0

    Hello Luiz,

    Thank you for provding test cases.

    SQL> drop materialized view log on pedido;
    Materialized View log dropped.
    SQL> drop materialized view log on item_pedido;
    Materialized View log dropped.
    SQL> create materialized view log on pedido
      with rowid;
    Materialized View log created.
    SQL> create materialized view log on item_pedido
      with rowid;
    Materialized View log created.
    SQL> create materialized view mv_pedido_item
    refresh fast as
    select pe.nr_pedido, pe.descricao_pedido, ip.nr_produto, pe.rowid pe_rowid, ip.rowid ip_rowid
      from pedido pe, item_pedido ip where pe.nr_pedido = ip.nr_pedido;
    Materialized view created.
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    1 row selected.
    

    Concerning
    Peter

  • Randomization of materialized view refresh rate

    Hi, I have several materialized view is refreshed every hour.
    Now, I add a few more, and when the refresh occurs, it must now once more because it made the 9 materialized view update.
    I like to shoot at random a little time between refresh.
    I thought I would try something like this:
    NEXT sysdate+(round(dbms_random.value(0.8,1.2),2)/24)
    in my create materialized view, instruction, but it seems that such a method is not allowed.
    Is there another way to do it or to take care of the performance of refresh in other ways?

    Not sure what you mean.

    I'll change the frequency of refresh a bit, so I will not wait too long to see an effect ;):

    SQL> select * from v$version where rownum = 1
    /
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    1 row selected.
    
    SQL> create or replace view timer
    as
       select sysdate + (round (dbms_random.value (0.8, 1.2), 2) / 24/60) t
         from dual
    /
    View created.
    
    SQL> create materialized view mv_emp
    refresh complete on demand
    start with sysdate
    as
    select * from emp
    /
    Materialized View created.
    
    SQL> declare
       x   number := 100;
    begin
       sys.dbms_job.
       isubmit (job         => x,
                what        => 'dbms_refresh.refresh(''MV_EMP'');',
                next_date   => sysdate,
                interval    => '(select * from timer)',
                no_parse    => false
               );
       sys.dbms_output.put_line ('Job Number is: ' || to_char (x));
       commit;
    end;
    /
    Job Number is: 100
    PL/SQL procedure successfully completed.
    
    SQL> select sysdate, mview_name, last_refresh_date  from user_mviews where mview_name = 'MV_EMP'
    /
    SYSDATE               MVIEW_NAME                     LAST_REFRESH_DATE
    --------------------- ------------------------------ ---------------------
    03.03.2010 14:53:49   MV_EMP                         03.03.2010 14:53:49
    1 row selected.
    
    SQL> exec dbms_lock.sleep(30) ---- wait a bit and see
    PL/SQL procedure successfully completed.
    
    SQL> select sysdate, mview_name, last_refresh_date  from user_mviews where mview_name = 'MV_EMP'
    /
    SYSDATE               MVIEW_NAME                     LAST_REFRESH_DATE
    --------------------- ------------------------------ ---------------------
    03.03.2010 14:54:19   MV_EMP                         03.03.2010 14:53:53
    1 row selected.
    
  • Materialized views Oracle | Reporting

    I have a requirement as follows:

    Requirement:
    We must create a Reporting DB to be used for information and a transactional database will be in separate host. Fundamentally, he need to extract data from a set of transactional DB tables and move to the Reporting DB schema at adequate intervals.


    We may have to get a different column data in different tables and store it in a single table / several reports DB tables.


    Solution (Please confirm):

    I intend to use Oracle materialized views in the same host as transactional DB to next part of requirment

    "We may have to get a different column data in different tables and store it in a single table / several reports DB tables.

    and then use Oracle streams to move at regular intervals of DB reports.

    Is this feasible?
    Or please suggest a solution.

    Thank you
    APPU

    We must create a Reporting DB to be used for information and a transactional database will be in separate host. Fundamentally, he need to extract data from a set of transactional DB tables and move to the Reporting DB schema at adequate intervals.

    Depending on how small and simple is your database, you can create materialized views on the Reporting DB to point to DB Transactionla through the database link.

    I intend to use Oracle materialized views in the same host as transactional DB to next part of requirment

    If are simple MVs, then let them cool off quickly. If too complex, all jobs to refresh at specific intervals.

    "We may have to get a different column data in different tables and store it in a single table / several reports DB tables.

    You will be several tables in DB report in the form of the Metrialised views

    and then use Oracle streams to move at regular intervals of DB reports.

    This combination is not necessary. You're talking about two different things at the same time.

  • I get "failed to set the refresh attribute COMMIT for the materialized view" when I try to create a MV using a table and another MV

    Experts,

    I'm trying to create a YOUNG refreshable ON COMMIT MV (xyz) using a table (circuit) and quickly updateable on validation MV (abc), but get an error:

    SQL error: ORA-12054: cannot set the attribute ON COMMIT refresh for the materialized view

    12054 00000 - "cannot set the refresh attribute COMMIT for the materialized view.

    * Cause: The materialized view did not meet the requirements for update to

    moment of validation.

    * Action: Specify only valid options.

    1] MV abc
    = MV abc defined as below =.

    CREATE MATERIALIZED view abc_MV

    Immediate CONSTRUCTION

    REFRESH QUICKLY YOU COMMIT using constraints of trust

    WITH ROWID AS SELECT n.*,.

    n.ROWID noderowid

    node n

    where n.nodetype in (1610000069,1610007267);


    -Above works OK and MV connect you on table node is created successfully

    =====================================================

    [ 2] Circuit Board

    ======================================================

    CREATE MATERIALIZED VIEW LOG ON Cramer.Circuit WITH SEQUENCE, ROWID ( ) -all columns of table ofcircut parentheses

    INCLUDING THE NEW VALUES;

    -More top works OK and MV connect you on table circuit is created successfully

    ======================================================



    [3] trying to create MV xyz

    ======================================================

    CREATE MATERIALIZED VIEW LOG ON cramer.abc_MV WITH SEQUENCE, ROWID ( ) -all columns of abc_MV brackets

    INCLUDING THE NEW VALUES;

    -Above works OK and log on ABC MV MV gets created successfully

    -Problematic step below

    Xyz_MV CREATE MATERIALIZED VIEW

    IMMEDIATE CONSTRUCTION

    REFRESH QUICKLY YOU COMMIT using constraints of trust

    AS

    SELECT c., c.rowid circuit_rowid, n.rowid tr_rowid

    the circuit c, abc_mv n

    where circuit2startnode = n.nodeid

    and c.rpplanId = n.rpplanId;
    ==========================================================

    Clues on how to solve this problem and make quickly updatable ON Commit MV xyz

    Thanks in advance.

    Chanchal,

    If you can read my original post carefully you may have noticed that all these restrictions will not apply in my case.

    All,

    In any case I found the solution to my problem.

    There are a few additional restrictions for materialized views multilayer

    Additional Restrictions for master materialized views

    The following types of materialized views may not be masters of editable materialized views:

    • ROWIDmaterialized views
    • Complex materialized views
    • Read-only materialized views

    I've updated the underlying MV abc below and everything worked like a charm

    CREATE MATERIALIZED view abc_MV

    Immediate CONSTRUCTION

    REFRESH QUICKLY YOU COMMIT using constraints of trust

    IN SELECT

    n.*, n.rowid noderowid, nt.rowid nodetyperowid

    the node n, nodetype_m nt

    where n.node2nodetype = nt.nodetypeid

    and nt.nodetypeid in (1610000069,1610007267);

    Note: To ADD a join without which I was getting error below (although had primary key on the table of the node)

    SQL error: ORA-23415: materialized view log for "NODE" does not save the primary key

    23415 00000 - "view the log for materialized \"%s\".\"%s\"does not save the primary key.

    * Cause: A primary key materialized view is refreshed quickly, but the

    The materialized view log does not record the primary key information.

    * Action: Use CREATING MATERIALIZED VIEW LOG... Command to add a PRIMARY KEY to

    start recording of the primary key information in the materialized view

    Newspaper.

Maybe you are looking for