Elapsed time for the materialized view vs Master table query

Hello all;

Small confusion about time up for the vs Master materialized view table query

SQL > select count (*), sum (quan_sold), sum (amt_sold) of the sale;
COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
6000000 12000000 720480000
Elapsed time: 00:00:30.54
SQL > create materialized view mv1
2 activate the rewrite of the query as
3. select count (*), sum (quan_sold), sum (amt_sold) of the sale;
Materialized view created.
Elapsed time: 00:00:01.45
SQL > select count (*), sum (quan_sold), sum (amt_sold) of the sale;
COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
6000000 12000000 720480000
Elapsed time: 00:00:00.01

Please see the three cases "Elapsed Time"...

When comparing other cases.
1. my query takes long time (30.54), extraction of data from the sale
2. create a materialized view takes less time (01:45) why?

Source: http://uhesse.com/2009/07/08/brief-introduction-into-materialized-views/

>
Small confusion about elapsed time for the materialized view vs Master table query

SQL > select count (*), sum (quan_sold), sum (amt_sold) from the sale.

COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
6000000 12000000 720480000
Elapsed time: 00:00:30.54

SQL > create materialized view mv1
2 activate the rewrite of the query as
3. select count (*), sum (quan_sold), sum (amt_sold) of the sale;
Materialized view created.
Elapsed time: 00:00:01.45

SQL > select count (*), sum (quan_sold), sum (amt_sold) from the sale.

COUNT (*) SUM (QUAN_SOLD) SUM (AMT_SOLD)
6000000 12000000 720480000
Elapsed time: 00:00:00.01

Please see the three cases "Elapsed Time"...

When comparing other cases.
1. my query takes long time (30.54), extraction of data from the sale
2. create a materialized view takes less time (01:45) why?
>
Many queries take less time the second time you run them. After the first performance, there may be many, if not all, lines in the buffer cache. Then the second round will not make any or all e/s physical but will obtain data from the buffer cache.

Also, you haven't checked that the MV was even used for the second run.

Drop the MV and make the query several times and means of the time. Then create the MV and do the same thing.

Tags: Database

Similar Questions

  • 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.

  • Recommendation for the materialized view

    Hello

    I am looking for Oracle Materialized View recommendation in the 9i version.
    I searched in the Oracle9i Data Warehousing Guide at http://download.oracle.com/docs/cd/B10501_01/server.920/a96520.pdf.
    Do you have any information?
    Thank you.

    Depends on what you're trying to accomplish. What would it be?

  • SQL statement for the materialized view?

    Can someone please tell me what SQL statement creates a materialized view?

    Syntactically, Yes. Otherwise Yes too (as long as you don't mind the Cartesian join with State B).
    Why not just try and see what happens?

    Concerning

    Etbin

  • Drop the materialized view's base table

    HI please let me know what happens if I drop from the base table of a materialized view? the MV remains valid with the data?

    Hello

    Well, it's easy to test yourself.

    SQL> select count(*) from t1;
    
      COUNT(*)
    ----------
           100
    
    SQL> desc t1
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     ID                                                 NUMBER(10)
    
    SQL> create materialized view t1_mv as select * from t1;
    
    Materialized view created.
    
    SQL> select count(*) from t1_mv;
    
      COUNT(*)
    ----------
           100
    
    SQL> drop table t1 purge;
    
    Table dropped.
    
    SQL> select count(*) from t1_mv;
    
      COUNT(*)
    ----------
           100
    
    SQL> desc t1_mv
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     ID                                                 NUMBER(10)
    
    SQL> select object_type, status from user_objects where object_name = 'T1_MV';
    
    OBJECT_TYPE         STATUS
    ------------------- -------
    TABLE               VALID
    MATERIALIZED VIEW   INVALID
    
    SQL> select * from t1_mv where rownum < 5;
    
            ID
    ----------
             1
             2
             3
             4
    
    SQL>
    

    I think the answer is very clear.

    Asif Momen
    http://momendba.blogspot.com

  • Dictionary for the materialized view partitions

    Hello

    I created a view of materilaized with partitions and I need to add dynamicaaly partitions using the procedure stored so that I need to check whther the partiions with the same name existing.where can I see the names of partition for a view of materilaized there is any table as 'USER_TAB_PARTITIONS '. apologizes if the same query exists in the forum

    You can see in user_tab_partitions is...

    select *
    from user_tab_partitions
    where table_name = 'YOUR_MV_NAME'
    
  • Get the elapsed time in the frame of the specific sequence

    Hello

    I'm running a flat sequence in one of my programs and read time elapsed in a picture in a form vi. I don't want to have the elapsed time for the entire program, just the elapsed time whenever this specific image runs, from scratch whenever that image in the sequence begins. The formula is just a linear equation which is dependent on time, so his criticism that it resets each time in order to provide a line that progresses from t = 0 each time. I tried to use in the context of the time, but I don't know how to set up properly to give the elapsed time, I'm looking for.

    I don't know how long the framework works because I just need a way to input what time her (ms or s) to a given point during execution, from t = 0 each execution.

    First of all, your formula.vi should be outside the framework of the sequence.  You can determine the run-time WHEN the framework is completed.  Place a County vi check before and after the image and subtract. (delta t is in milliseconds)

  • Calculate the elapsed time between the horodateurs log Table

    Hello

    I'm looking for some codes SQL allows to calculate the elapsed time between the timestamps in a log table.  The log table has some STOP-START operations.

    I just want to calculate the elapsed time between the START and PAUSE of Transactions, as well as START and EXECUTE transactions.

    So, in the example below, the time spent must be:

    START 09:15 break 09:20 (5 Minutes)
    START 09:30 to 09:45 (15 Minutes) FULL

    Total elapsed time for LOG_ID 1234 should be 20 minutes.  This excludes the 09:20 at 09:30 BREAK at the START time.

    LOG_ID

    SEQ_NUM

    LOG_TYPE_CD

    CRE_DTTM

    1234

    1

    BEGINNING

    09-15 - 2013:09:15:00

    1234

    2

    BREAK

    09-15 - 2013:09:20:00

    1234

    3

    BEGINNING

    09-15 - 2013:09:30:00

    1234

    4

    ALL THE

    09-15 - 2013:09:45:00

    Any suggestions?

    Thanks for your time

    -DT

    Hello

    Thanks for posting the CREATE TABLE and INSERT.  be sure to post the results desired from these data.

    user13071913 wrote:

    Hi thanks for the help...

    The date is a true timestamp.  ...

    Here's a sample of CREATE TABLE and a few inserts.  3 ID transaction, each with a series of journal entries.

    CREATE TABLE 'LOG_TABLE_X '.

    (SELECT 'ID' CHAR (14 BYTES) NOT NULL,)

    ACTIVATE THE "LOG_TYPE_FLG" TANK (4 BYTES) NOT NULL,

    ALLOW "LOG_DTTM" DATE NOT NULL

    );

    ...

    I'm so confused.  Is log_dttm a TIMESTAMP, you said in the story, or is it a DATE, as you say in the CREATE TABLE statement, or is it a VARCHAR2 as Thur INSERT statements?  I'll assume it's a DATE.

    I left out an important step yesterday.  The computation of the last_start, we need to use a CASE statement so that we record only the time of events STRT.

    Here's the revised query:

    WITH got_last_start AS

    (

    SELECT id, log_type_flg, log_dttm

    LAST_VALUE (CASE

    WHEN log_type_flg = "STRT".

    THEN log_dttm

    END

    IGNORES NULL VALUES

    ) OVER (PARTITION BY id - can - be

    ORDER BY log_dttm

    ) AS last_start

    OF log_table_x

    )

    SELECT id, log_type_flg, log_dttm

    , (log_dttm - last_start) * 24 * 60 elapsed

    , SUM (log_dttm - last_start) OVER (PARTITION BY ID.

    ORDER BY log_dttm

    ) * 24 * 60 AS total_elapsed

    OF got_last_start

    WHERE log_type_flg IN ("CMPT", "PAUS")

    ORDER BY id, log_dttm

    ;

    Output of your sample data:

    ID LOG_ ELAPSED TOTAL_ELAPSED LOG_DTTM

    -------------- ---- ------------------- -------- -------------

    1111 PAUS 09-26 - 2013:09:09:58.17.17

    1111 CMPT 09-26 - 2013:10:09:58 1.00.83

    2222 CMPT 09-26 - 2013:12:09:58 180.00 180.00

    3333 CMPT 09-26 - 2013:10:09:42 59.73 59.73

    In Oracle, when you subtract one DATE from another DATE, the result is the NUMBER of days between them.  In the above query, I multiplied the past columns and total_elapsed by the number of minutes per day (24 * 60), to show the time in minutes.

  • Change the definition of the materialized view while maintaining access for users uninteruupted

    Hello

    We have a system report and the need to change the report definition mv access - like to do it without interruption.

    Is this possible?

    the sql behind mv was change picks up so column of another table.

    Have you heard but not used for dbms_redefinition tables

    Thank you

    It is built in the Oracle solution for this one, where you can edit the definition WITHOUT interruption. You can drop the materialized view existing with the clause "save table" and rebuilt the view materialized on 'predefined table'. I googled this example for you

    create materialized view mv1 as select dept , count(*) as cnt from scott.emp;

    We want to change the statement so that only dept more 5 will be calculated

    drop materialized view mv1 preserve table;
    

    Notice that PRESERVE TABLE clause - mv1 table is not droped - single layer mview.

    desc mv1
    

    now, we create the mview with a different query on top of the existing table

    create materialized view mv1 on prebuilt table as  select dept , count(*) as cnt from scott.emp where dept > 5;
    

    Notice that on prebuilt table the mview uses the existing object clause.

    exec dbms_mview.refresh_mview('mv1');
    

    http://StackOverflow.com/questions/18085894/redefine-MATERIALIZED-view-with-no-downtime

    http://Arup.blogspot.com/2009/01/ultra-fast-MV-alteration-using-prebuilt.html

  • performance of the queries on the main tables of the materialized view vs

    Hello

    I'm afraid of strange behavior in db, on my paintings of master UDBMOVEMENT_ORIG (26mil.rows) and UDBIDENTDATA_ORIG (18mil.rows) is created the materialized view TMP_MS_UDB_MV (UDBMOVEMENT stands for this object) that meets certain default conditions and the join on these paintings of master condition. MV got on the lines of 12milions. I created MV for poll not so huge objects, MV got 3GB, paintings of master toghether 12 GB. But I don't understand that physical reads and becomes compatible is less on MV that on the main tables, the final execution time is shorter on the master tables. See my journal below.

    Why?

    Thanks for the replies.


    SQL > set echo on
    SQL > @flush
    SQL > alter system flush buffer_cache;

    Modified system.

    Elapsed time: 00:00:00.20
    SQL > alter system flush shared_pool;

    Modified system.

    Elapsed time: 00:00:00.65
    SQL > SELECT
    UDBMovement.zIdDevice 2, UDBMovement.sDevice, UDBMovement.zIdLocal, UDBMovement.sComputer, UDBMovement.tActionTime, UDBIdentData.sCardSubType, UDBIdentData.sCardType, UDBMovement.cEpan, UDBMovement.cText, UDBMovement.lArtRef, UDBMovement.sArtClassRef, UDBMovement.lSequenz, UDBMovement.sTransMark, UDBMovement.lBlock, UDBMovement.sTransType, UDBMovement.lGlobalID, UDBMovement.sFacility, UDBIdentData.sCardClass, UDBMovement.lSingleAmount, UDBMovement.sVAT, UDBMovement.lVATTot, UDBIdentData.tTarifTimeStart, UDBIdentData.tTarifTimeEnd, UDBIdentData.cLicensePlate, UDBIdentData.lMoneyValue, UDBIdentData.lPointValue, UDBIdentData.lTimeValue, UDBIdentData.tProdTime, UDBIdentData.tExpireDate
    UDBMOVEMENT_orig UDBMovement 3, Udbidentdata_orig UDBIdentData
    4. WHERE
    5 UDBMovement.lGlobalId = UDBIdentData.lGlobalRef (+) AND UDBMovement.sComputer = UDBIdentData.sComputer (+)
    6 AND UDBMovement.sTransType > 0 AND UDBMovement.sDevice < 1000 AND UDBMovement.sDevice > = 0 AND UDBIdentData.sCardType IN (2) AND (bitand(UDBMovement.sSaleFlag,1) = 0 AND bitand(UDBMovement.sSaleFlag,4) = 0) AND UDBMovement.sArtClassRef < 100
    7 AND UDBMovement.tActionTime > = TO_DATE (May 5, 2011 00:00:00 ',' dd/mm/yyyy hh24:mi:ss') + 0.25 AND UDBMovement.tActionTime < TO_DATE (May 5, 2011 00:00:00 ',' dd/mm/yyyy hh24:mi:ss') + 0.5
    8 ORDER BY tActionTime, lBlock, lSequenz;

    4947 selected lines.

    Elapsed time: 00:00:15.84

    Execution plan
    ----------------------------------------------------------
    Hash value of plan: 1768406139

    ------------------------------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | TempSpc | Cost (% CPU). Time |
    ------------------------------------------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | 7166 | 1238K | 20670 (1) | 00:04:09 |
    | 1. SORT ORDER BY | 7166 | 1238K | 1480K | 20670 (1) | 00:04:09 |
    | 2. NESTED LOOPS |
    | 3. NESTED LOOPS | 7166 | 1238K | 20388 (1) | 00:04:05 |
    |* 4 | TABLE ACCESS BY INDEX ROWID | UDBMOVEMENT_ORIG | 7142 | 809K | 7056 (1) | 00:01:25 |
    |* 5 | INDEX RANGE SCAN | IDX_UDBMOVARTICLE | 10709. 61 (0) | 00:00:01 |
    |* 6 | INDEX UNIQUE SCAN | UDBIDENTDATA_PRIM | 1 | | | 1 (0) | 00:00:01 |
    |* 7 | TABLE ACCESS BY INDEX ROWID | UDBIDENTDATA_ORIG | 1. 61. 2 (0) | 00:00:01 |
    ------------------------------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    4 - filter("UDBMOVEMENT".") STRANSTYPE"> 0 AND 'UDBMOVEMENT '. "" SDEVICE ' < 1000 AND
    BITAND ("SSALEFLAG", 1) = 0 AND "UDBMOVEMENT". "" SDEVICE ' > = 0 AND BITAND ("UDBMOVEMENT". "SSALEFLAG «(, 4) = 0)" "
    5 - access("UDBMOVEMENT".") TACTIONTIME' > = TO_DATE (' 2011-05-05 06:00 ',' syyyy-mm-jj)
    ('HH24:mi:SS) AND "UDBMOVEMENT". "' TACTIONTIME ', TO_DATE (' 2011-05-05 12:00 ',' syyyy-mm-jj)
    ('HH24:mi:SS) AND "UDBMOVEMENT". ("' SARTCLASSREF" < 100)
    filter ("UDBMOVEMENT". "SARTCLASSREF" < 100)
    6 - access("UDBMOVEMENT".") LGLOBALID "=" UDBIDENTDATA. " "" LGLOBALREF "AND
    'UDBMOVEMENT '. "' SCOMPUTER"="UDBIDENTDATA." ("' SCOMPUTER")
    7 - filter("UDBIDENTDATA".") SCARDTYPE "= 2)


    Statistics
    ----------------------------------------------------------
    543 recursive calls
    0 db block Gets
    84383 compatible Gets
    4485 physical reads
    0 redo size
    533990 bytes sent via SQL * Net to client
    3953 bytes received via SQL * Net from client
    331 SQL * Net back and forth to and from the client
    kinds of 86 (memory)
    0 sorts (disk)
    4947 lines processed

    SQL > @flush
    SQL > alter system flush buffer_cache;

    Modified system.

    Elapsed time: 00:00:00.12
    SQL > alter system flush shared_pool;

    Modified system.

    Elapsed time: 00:00:00.74
    SQL > SELECT UDBMovement.zIdDevice, UDBMovement.sDevice, UDBMovement.zIdLocal, UDBMovement.sComputer, UDBMovement.tActionTime, UDBMovement.sCardSubType, UDBMovement.sCardType, UDBMovement.cEpan, UDBMovement.cText, UDBMovement.lArtRef, UDBMovement.sArtClassRef, UDBMovement.lSequenz, UDBMovement.sTransMark, UDBMovement.lBlock, UDBMovement.sTransType, UDBMovement.lGlobalID, UDBMovement.sFacility, UDBMovement.sCardClass, UDBMovement.lSingleAmount, UDBMovement.sVAT, UDBMovement.lVATTot, UDBMovement.tTarifTimeStart, UDBMovement.tTarifTimeEnd, UDBMovement.cLicensePlate, UDBMovement.lMoneyValue, UDBMovement.lPointValue, UDBMovement.lTimeValue, UDBMovement.tProdTime
    2. OF UDBMOVEMENT WHERE
    3 UDBMovement.sTransType > 0 AND UDBMovement.sDevice < 1000 AND UDBMovement.sDevice > = 0 AND UDBMovement.sCardType IN (2) AND (bitand(UDBMovement.sSaleFlag,1) = 0 AND bitand(UDBMovement.sSaleFlag,4) = 0) AND UDBMovement.sArtClassRef < 100
    4. AND UDBMovement.tActionTime > = TO_DATE (May 5, 2011 00:00:00 ',' the hh24: mi: ss' dd/mm/yyyy) + 0.25
    5 AND UDBMovement.tActionTime < TO_DATE (May 5, 2011 00:00:00 ',' the hh24: mi: ss' dd/mm/yyyy) + 0.5 ORDER BY tActionTime, lBlock, lSequenz;

    4947 selected lines.

    Elapsed time: 00:00:26.46

    Execution plan
    ----------------------------------------------------------
    Hash value of plan: 3648898312

    -----------------------------------------------------------------------------------------------------------
    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |
    -----------------------------------------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | 2720 | 443K | 2812 (1) | 00:00:34 |
    | 1. SORT ORDER BY | 2720 | 443K | 2812 (1) | 00:00:34 |
    |* 2 | MAT_VIEW ACCESS BY INDEX ROWID | TMP_MS_UDB_MV | 2720 | 443K | 2811 (1) | 00:00:34 |
    |* 3 | INDEX RANGE SCAN | EEETMP_MS_ACTTIMEDEVICE | 2732 | 89 (0) | 00:00:02 |
    -----------------------------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):
    ---------------------------------------------------

    2 - filter("UDBMOVEMENT".") STRANSTYPE"> 0 AND BITAND ("UDBMOVEMENT". "SSALEFLAG «(, 4) = 0 AND" "
    BITAND ("SSALEFLAG", 1) = 0 AND "UDBMOVEMENT". ("' SARTCLASSREF" < 100)
    3 - access("UDBMOVEMENT".") TACTIONTIME' > = TO_DATE (' 2011-05-05 06:00 ',' syyyy-mm-jj)
    ('HH24:mi:SS) AND "UDBMOVEMENT". "" SDEVICE ' > = 0 AND "UDBMOVEMENT". ' SCARDTYPE ' = 2 AND ".
    'UDBMOVEMENT '. "" TACTIONTIME "< TO_DATE(' 2011-05-05 12:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
    'UDBMOVEMENT '. ("' SDEVICE ' < 1000)
    filter ("UDBMOVEMENT". "SCARDTYPE"= 2 AND "UDBMOVEMENT"." SDEVICE' < 1000 AND
    'UDBMOVEMENT '. ("' SDEVICE ' > = 0)


    Statistics
    ----------------------------------------------------------
    449 recursive calls
    0 db block Gets
    6090 gets coherent
    2837 physical reads
    0 redo size
    531987 bytes sent via SQL * Net to client
    3953 bytes received via SQL * Net from client
    331 SQL * Net back and forth to and from the client
    168 sorts (memory)
    0 sorts (disk)
    4947 lines processed

    SQL > spool off

    Published by: MattSk on February 4, 2013 14:20

    >
    The second query makes a full table of materialized view scan.
    >
    What you base that statement on?

    I do not see any table full scan in terms of the second query. All I see is
    >
    * 2 MAT_VIEW ACCESS BY INDEX ROWID TMP_MS_UDB_MV 2720 443K 2811 (1) 00:00:34

  • Trigger on the materialized view

    Hello

    I have the scenario based (Database 11 g):

    There is a view materialized (PERSON), which contains the ID and NAME fields. This MV is update daily with a fast refresh.

    I have a second array (NAMES), with ID and NORM_NAME. This table contains the name of the person, without special characters.

    For example, for recording / * 1 BJORN * / in the PERSON table

    I would check * 1 BJORN * / in table NAMES.


    Problem is how to fill the NAME table after the filling of the materialized view.

    I used a trigger AFTER INSERT or update, as described below, but even if I update the master table (for this purpose, update the MV), I have only to trigger inserts.


    Is there a way to implement a trigger "after update" on a materialized view, or do I need another approach?


    /*


    create or replace TRIGGER TRG_TESTE_MV

    AFTER INSERT OR UPDATE ON THE PERSON

    REFERENCING OLD AS OLD AGAIN AS NEW

    FOR EACH LINE

    BEGIN

    IF THE INSERTION

    INSERT THE NAMES

    VALUES

    (: NEW.id,:NEW.NAME);

    END IF;

    IF THE UPDATE CAN

    UPDATE OF NAMES

    SET NAME =: NEW.NAME WHERE ID =: NEW.id;

    END IF;

    END;

    */

    Thanks for any help

    Your trigger fires, but I doubted that you will be satisfied with the results. You really need to understand how to refresh process works before you begin creating triggers of MV:

    SQL > create table emp1 in select * from EMP
    2.

    Table created.

    SQL > create materialized view emp1 with rowid journal
    2.

    Materialized view log that is created.

    SQL > create materialized view emp1_mv
    2 fast refresh
    3 on request
    4 with rowid
    5 as
    6 select * from emp1
    7.

    Materialized view created.

    SQL > create or replace
    trigger 2 emp1_mv_biudr
    3 before inserting
    4 or update
    5 or delete
    6 on emp1_mv
    7 for each line
    Start 8
    9 insert then dbms_output.put_line ('INSERT' |: new.ename); end if;
    10 if the deletion then dbms_output.put_line ('REMOVE' |: old.ename); end if;
    11 end;
    12.

    Trigger created.

    SQL > insert
    2 in emp1 (empno, ename, sal)
    3 values(1,'X',1000)
    4.

    1 line of creation.

    SQL > validation
    2.

    Validation complete.

    SQL > set serveroutput on
    SQL > exec dbms_mview.refresh ('emp1_mv', 'f');
    INSERTION OF X

    PL/SQL procedure successfully completed.

    SQL > update emp1
    2 set sal = sal + 1
    3 where ename ('King', 'JONES')
    4.

    2 lines to date.

    SQL > validation
    2.

    Validation complete.

    SQL > set serveroutput on
    SQL > exec dbms_mview.refresh ('emp1_mv', 'f');
    INSERTION OF JONES
    INSERTION OF KING

    PL/SQL procedure successfully completed.

    SQL > delete emp1
    2 where in ename ('ALLEN', 'SMITH')
    3.

    2 deleted rows.

    SQL > validation
    2.

    Validation complete.

    SQL > set serveroutput on
    SQL > exec dbms_mview.refresh ('emp1_mv', 'f');

    PL/SQL procedure successfully completed.

    SQL >

    As you can see, refresh MV updates ever. Results update underlying table to remove/insert in MV. That's why your trigger will not give the results that you expected.

    SY.

  • Taking some time to refresh materialized view

    I'd like to understand why refresh of the materialized view takes more time than to run the sql code of the materialized view.
    For example, I have a test_mv of materialized view that is created as below; When I simply run the select statement I get the result in 34 seconds, while if I try to update help
    BEGIN
    DBMS_MVIEW.refresh ('wi_mv7_monthly','C',ATOMIC_REFRESH=>false);
    end;
    /
    It takes about 74 dry

    Creation of MV
    Oracle version: Oracle Database 11 g Enterprise Edition Release 11.2.0.2.0 - 64 bit Production
    create materialized view TEST_MV
    (
      COLUMN_NAME_1,
      OBJECT_NAME,
      COLUMN_ID,
      "SUM(C.DATA_LENGTH)"
    ) organization heap
    
    partition by list (COLUMN_ID) (
     PARTITION "first_10_col" VALUES
      (
        1, 2, 3, 4, 5, 6, 7, 8, 9, 10
      ),
       PARTITION "After_10_col" VALUES
      (
        11,12, 13, 14, 15, 16, 17, 18, 19, 20
      ),
       PARTITION "NONE" VALUES (DEFAULT)
      )
    BUILD IMMEDIATE USING INDEX REFRESH COMPLETE ON DEMAND USING DEFAULT LOCAL ROLLBACK SEGMENT USING ENFORCED CONSTRAINTS
    as 
    select  /*+ parallel(o,8) parallel(c,2) */
    C.COLUMN_NAME as COLUMN_NAME_1,O.OBJECT_NAME,C.COLUMN_ID,SUM(C.DATA_LENGTH) from ALL_OBJECTS O
    join ALL_tab_columns c on c.table_name=o.object_name
    group by 
    C.COLUMN_NAME,O.OBJECT_NAME,C.COLUMN_ID
    Published by: user627047 on Sep 6, 2012 06:56

    SQL select statement some readings and refresh the views but mview reads and writes, so it consumes more time.

    If you want to speed up the cooling you can use the Refresh method fast mview

  • Analyze the materialized view

    I just created a view, materialized; I have to analyze the materialized view after getting created? If so, how it will impact performance.

    user3636719 wrote:

    select * from v$version;
    
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
    PL/SQL Release 10.2.0.5.0 - Production
    "CORE     10.2.0.5.0     Production"
    TNS for HPUX: Version 10.2.0.5.0 - Production
    NLSRTL Version 10.2.0.5.0 - Production
    

    default V10 is statistics to collect once every 24 hours.
    so if you do nothing, the MV will be tomorrow at this time stats

  • Refresh of the materialized view; Process flow

    I was wondering if anyone has used process flow to refresh the materialized view.

    I'm trying to use a process flow for it, either run something similar to below
    EXECUTE Dbms_refresh.Refresh ('"ODW_SRC".) "MV_SERVICE_DAILY_AUDIT" ');

    I try to avoid using the Scheduler of DB because I want to make sure that the process flow is not conflict with the update of a materialized view possible cause conflict more execution time of the work expected will refresh window.

    I guess I could use a transformation and build. but I was wondering if there is an easier way in the execution of it just line... an idea

    Thanks in advance for your help

    Sorry, I think that the term OWB is post mapping process, its actually an operator in an OWB mapping where you can add a procedure for example call. The procedure can do pretty much what he wants.

    See you soon
    David

  • The materialized view log and user...

    Hello
    Suppose a user, we will call him A has a table and another user B must create a log of materialized view on the table that a user has.
    While user B have all the privileges of object (direct priv insert, update, delete... not through a role) on the table to the user may not create a log of mv on this table on its schema...
    Thus, the insert/update/delete stmts on < table_name > are run successfully (after having logged on as user B).

    The error message ' ORA-00942: table or view does not exist ' appears when I run the command:
    Connect B/B;
    create log view materialized on table_name with sequence including new values;

    Note: I use ORADB 10.2.0.4 and it stands for table-name to user B (which tries to create the log of mv on)...

    The req. above is possible somehow?

    Thank you
    SIM

    The documentation says the following:

    The materialized view log is created in the same schema as the master of the target.

    HTH!

Maybe you are looking for

  • Can I set up a business e-mail address?

    Hello I have the email address [email protected] currently, but want to set a work email address (for example [email protected]) IS this something that I can do this through Mozilla? or do I have to go through my broadband provider? Thank you

  • Photosmart c4780: C4780 has no wireless option in the hp utility

    I followed the steps here USB to connect my printer to my wireless network, but there is no option in the wireless Settings menu. I have reset the printing system and the printer itself without result. I also tried following that the WPS steps but my

  • THE SOUND IS SUPER LOW

    The sound on my HP Pavilion 5 is really weak and only 1 seaker looks pushes her out. It has been so since I bought it I was wondering if this is a common problem or if anyone knows a quick fix.

  • Is there a peak width .vi

    I need to calculate the width of the peaks of some data. I am currently using the calculation mentioned in this topic: http://forums.NI.com/T5/LabVIEW/peak-width/m-p/382458?requireLogin=false However, I was just wondering is there any labview .vi or

  • Windows blue screen of death (ASF) when I play Garrysmod

    Windows blue screen of death (ASF) when I play Garrysmod Hey,. When I started to play Garrysmod (GMod) as blue screen arrives (happened 2 twice now)... Signature of the problem:Problem event name: BlueScreenThe system version: 6.1.7600.2.0.0.256.1Loc