Question on Materialized View Log Table

Hello,
One of our MLOG table keeps growing without the records getting flushed out ...The Materiazed view gets refreshed successfully though...The master/mlog tables are remote..
There is only one MV attached to the master table as evident from the results below...
//On the Master site
select owner,name, mview_site, mview_id from all_registered_mviews where owner='SSP' and name='TRANS_STATUS'
Owner Name MVIEW_SITE MVIEW_ID
SSP TRANS_STATUS SSPRD     12864
The above output is expected and good but I was surprised to see the output below...
select owner,master,to_char(mview_last_refresh_time,'MM-DD-YYYY HH:MI:SSAM'), mview_id from all_base_table_mviews where owner='SSP' and master='TRANS_STATUS'
Owner Master MVIEW_LAST_REFRESH_TIME MVIEW_ID
SSP TRANS_STATUS     01-27-2011 06:32:05PM     12724
SSP TRANS_STATUS     01-29-2011 12:03:06PM     12844
SSP TRANS_STATUS     06-18-2011 07:32:55AM     12864
I'm not sure why I see differnt MVIEW_IDs...We refresh this MV every day....
On 01-27-2011 it was a regular normal refresh using dbms_mview.refresh
On 01-29-2011 we had to drop and recreate our MV and then refresh it using dbms_mview.refresh
On 06-18-2011 it was a regular normal refresh using dbms_mview.refresh
Why are there different MVIEW_IDs when there is only one MV that is attached to the master table. Could this be the reason why the logs are not getting flushed out?
Thanks for your time...

What is your database version?
How did you even manage to create two objects with the same name?
As I know, it is impossible, oracle will throw errors like below:
SQL> create table FOO (str varchar2(5), num number(3,0));
Table created.
SQL> CREATE MATERIALIZED VIEW FOO
  2  BUILD DEFERRED
  3  REFRESH COMPLETE ON DEMAND
  4  enable query rewrite as
  5  select SUM(NUM)
  6  from FOO GROUP BY STR;
from FOO GROUP BY STR
ERROR at line 6:
ORA-00955: name is already used by an existing object
SQL>

Similar Messages

  • Materialized View Log table with sequence

    I have a materialized view log in Database A..a very simple one...similar to "create materialized view log on t WITH PRIMARY KEY"...The primary key is a composite key of 2 columns...Description of the mlog table looks like this...
    desc mlog$_t
    emp_ctr NUMBER
    emp_date DATE
    SNAPTIME$$ DATE
    DMLTYPE$$ VARCHAR2(1)
    OLD_NEW$$ VARCHAR2(1)
    CHANGE_VECTOR$$ RAW(255)
    The Materialized view is in database B...again a simple one...no aggregation...This gets refreshed on demand manually evey week. The records that get accumulated in the MLOG every week is ~ 300K..The manual refresh used to finish in about 20mins but since last week it is running for ever. Upon reviewing the contents of MLOG I noticed that it contained a mixture of inserts and updates. I'm not sure if the MLOG contanied only inserts in the past when the MV used to refresh very quickly...Based on the documentation, Oracle recommends creating MLOGS with "sequence" whenever inserts/updates/deleted are expected. I'm planning to drop and recreate the MLOG with sequence with the hope that this would fix the slow refresh issue...Appreciate if you could let me know your thoughs...
    I'm also planning to trace the session to get some wait event statistics to find out the reason for the slow refresh...

    There are a few reasons why refreshes slow down over time.
    1. Is the log table being cleared out after a refresh? If not, you may have another mview (maybe even one that doesn't exist any more) registered against this log. When this happens, the log table never stops growing.
    2. How big is the segment occupied by the table? If it has grown very large at some time in the past (e.g., because refresh was delayed), then when the refresh does a FTS on the log it will scan the whole segment - even if only a few rows are present.
    3. It may help to add an index to the PK columns, and another to SNAPTIME$$. Without them, the refresh will FTS the log. For a big segment, that can take a long time.
    -- Phil

  • Question on MATERIALIZED VIEW and table

    HI
    there are table (name is test123) and MATERIALIZED VIEW (name also is test123) stored in the same schema (name is schema123).
    If I run sql : select from schema123.test123;*
    I wanna know the result data I get is data of table test123 or MATERIALIZED VIEW test123, which one of them?
    Thanks in advance!

    What is your database version?
    How did you even manage to create two objects with the same name?
    As I know, it is impossible, oracle will throw errors like below:
    SQL> create table FOO (str varchar2(5), num number(3,0));
    Table created.
    SQL> CREATE MATERIALIZED VIEW FOO
      2  BUILD DEFERRED
      3  REFRESH COMPLETE ON DEMAND
      4  enable query rewrite as
      5  select SUM(NUM)
      6  from FOO GROUP BY STR;
    from FOO GROUP BY STR
    ERROR at line 6:
    ORA-00955: name is already used by an existing object
    SQL>

  • Who can help to solve this question on MATERIALIZED VIEW and table?thanks

    Hi,dear all.
    If there is a MV with the same name as a table and they both exist in the same schema .
    e.g: MV : test123 and table : test123 (they have same name) exist in schema : schema123.
    when I run a sql : select * from schema123.test123; , what's the result of the execution?? MV or table which of them's data are populated???
    thanks in advance!

    solved.

  • Creating a Materialized View Log After the Data has been instered

    Hi,
    I am trying to create a method of replication from Oracle to MySQL using the Materialized View Log table.
    This has been done before and works quite well, the only problem is that I am trying to impliment the log after the table has been created and populated and wish to push all the existing data through the log file...
    Does anyone know if it is possible to refresh the Materialized View Log and not a Materialized View.
    The way the replication is intended to work is:
    Oracle> Data inserted into table
    Oracle> writes the vector data to the MVL
    Script> Monitors the MVL and can see the changes being made to the Oracle Table
    Script> Updates MySQL with the data and removes the rows from the MVL
    MySQL is then used with other unix systems
    Currently we export the data from the table using Triggers and a cronjob running every x minute to check for changes in the TriggerTables
    Many thanks for your time on this, I have been checking for almost a whole working day and not found the answer to this problem.

    Thats what I thought, the MVL will only read data that has changed since it was created and wont have the option to load in all the data as though it was made before the table was created.
    From what I have read, the MVL is quicker than a Trigger and I have some free code that prooved to work from a MVL using it as a reference to know what records to update. There is not that much to a MVL, a record ID and type of update, New, Update or Delete.
    I think what I will have to do is work on a the same principle for the MVL but use a Trigger as this way we can do a full reload if required at any point.
    Many thanks for your help.

  • Materialized view logs pretty huge!

    Hi,
    I have a table MLOG$_XXXXX, which i guess is a materialized view log table. It is huge in size (80GB) and is growing at a very alarming rate.
    Could someone please help me to reduce the size of this table?
    How do I find out which materialized view is causing this table to grow? Is there any query through which I can find this out?
    The database is of version 10204 and is running on HP Unix (B.11.11).
    Thanks!

    The materialized views in the database are:
    SQL> select mview_name, owner, updatable, refresh_mode, last_refresh_date from dba_mviews;
    MVIEW_NAME                     OWNER      U REFRESH_MODE    LAST_REFRESH_DATE
    MV_EXCH_RT                     SYS        N COMMIT          03 JUN 2010 12:02:59
    ADMIN_MGMT_CO                  JJORA      N DEMAND          06 JUL 2010 01:37:39
    REG                            JJORA      N DEMAND          06 JUL 2010 01:37:39
    CNTRY                          JJORA      N DEMAND          06 JUL 2010 01:37:39
    OPER_GRP                       JJORA      N DEMAND          06 JUL 2010 01:37:39
    ADMIN_CO                       JJORA      N DEMAND          06 JUL 2010 01:37:39
    MV_JJGL_SUB_CD_141P            JJGL       N DEMAND          06 JUL 2010 01:24:43
    7 rows selected.The table which grows at an alarming rate is:
    SQL> select sum(bytes)/1024/1024/1024 from dba_segments where segment_name like 'MLOG$_XXXXX%';
    SUM(BYTES)/1024/1024/1024
                   77.8789063Now how do I find out, which materilized view is causing this table to grow? Can someone please provide me the query?
    Thanks!
    Edited by: user9104898 on Jul 6, 2010 8:11 AM

  • Questions on Materialized Views and MV Log tables

    Hello all,
    Have a few questions with regards to Materialized View.
    1) Once the Materialized View reads the records from the MLOG table the MLOG's records get purged. correct? or is it not the case? In some cases I still see (old) records in the MLOG table even after the MV refresh.
    2) How does the MLOG table distinguish between a read that comes from an MV and a read that comes from a user? If I manually execute
    "select * from <MLOG table>" would the MLOG table's record get purged just the same way as it does after an MV refresh?
    3) One of our MV refreshes hangs intermittently. Based on the wait events I noticed that it was doing a "db file sequential read" against the master table. Finally I had to terminate the refresh. I'm not sure why it was doing sequential read on the master table when it should be reading from the MLOG table. Any ideas?
    4) I've seen "db file scattered read" (full table scan) in general against tables but I was surprised to see "db file sequential read" against the table. I thought sequential read normally happens against indexes. Has anyone noticed this behaviour?
    Thanks for your time.

    1) Once all registered materialized views have read a particular row from a materialized view log, it is removed, yes. If there are multiple materialized views that depend on the same log, they would all need to refresh before it would be safe to remove the MV log entry. If one of the materialized views does a non-incremental refresh, there may be cases where the log doesn't get purged automatically.
    2) No, your query wouldn't cause anything to be purged (though you wouldn't see anything interesting unless you happen to implement lots of code to parse the change vectors stored in the log). I don't know that the exact mechanism that Oracle uses has been published, though you could go through and trace a session to get an idea of the moving pieces. From a practical standpoint, you just need to know that when you create a fast-refreshable materialized view, it's going to register itself as being interested in particular MV logs.
    3) It would depend on what is stored in the MV log. The refresh process may need to grab particular columns from the table if your log is just storing the fact that data for a particular key changed. You can specify when you create a materialized view log that you want to store particular columns or to include new values (with the INCLUDING NEW VALUES) clause. That may be beneficial (or necessary) to the fast refresh process but it would tend to increase the storage space for the materialized view log and to increase the cost of maintianing the materialized view log.
    4) Sequential reads against a table are perfectly normal-- it just implies that someone is looking at a particular block in the table (i.e. looking up a row in the table by ROWID based on the ROWID in an index or in a materialized view log).
    Justin

  • Will Materialized view log reduces the performance of DML statements on the master table

    Hi all,
    I need to refresh a on demand fast refresh Materialized view in Oracle 11GR2. For this purpose I created a Materialized view log on the table (Non partitioned) in which records will be inserted @ rate of 5000/day as follows.
    CREATE MATERIALIZED VIEW LOG ON NOTES NOLOGGING WITH PRIMARY KEY INCLUDING NEW VALUES;
    This table already has 20L records and adding this Mview log will reduce the DML performance on the table ?
    Please guide me on this.

    Having the base table maintain a materialised view log will have an impact on the speed of DML statements - they are doing extra work, which will take extra time. A more sensible question would be to ask whether it will have a significant impact, to which the answer is almost certainly "no".
    5000 records inserted a day is nothing. Adding a view log to the heap really shouldn't cause any trouble at all - but ultimately only your own testing can establish that.

  • Materialized view log update question

    Hi, I am running into a question regarding mview - not sure if it should behave that way or I didn't use it right.
    I have two base tables, sales and customers (drived from nested materialized view example in oracle doc):
    CREATE TABLE sales
    cust_ID VARCHAR2(32 BYTE) NOT NULL,
    amount_sold NUMBER,
    TEMP VARCHAR2(100 BYTE),
    CONSTRAINT sales_pk PRIMARY KEY (cust_id)
    CREATE TABLE customers
    cust_ID VARCHAR2(32 BYTE) NOT NULL,
    CUST_LAST_NAME VARCHAR2(100 BYTE),
    TEMP VARCHAR2(100 BYTE),
    CONSTRAINT cust_pk PRIMARY KEY (cust_id)
    CREATE MATERIALIZED VIEW LOG ON sales
    WITH ROWID (cust_id, amount_sold);
    CREATE MATERIALIZED VIEW LOG ON customers
    WITH ROWID (cust_id, cust_last_name);
    Then I create a fast refresh materialized view based on them:
    CREATE MATERIALIZED VIEW join_sales_cust
    REFRESH FAST ON DEMAND AS
    SELECT c.cust_id, c.cust_last_name, s.amount_sold, s.rowid srid, c.rowid crid
    FROM sales s, customers c
    WHERE s.cust_id = c.cust_id;
    Since this materialized view only invole cust_id and amount_sold from sales and cust_id and last_name from customers table, I do not want to trigger materialized view log entry if the TEMP column value gets updated. So follow update shouldn't trigger mlog:
    update sales set TEMP='TEMP2' where cust_id=1
    but this update should:
    update sales set amount_sold=3 where cust_id=1
    What I am seeing happenning is any update on the base table will triger mlog entried regardless whether the column is involed in the materialized view or not.
    Can someone please confirm if this is the correct behavior and whether there is a way to accomplish what I wanted to do?
    Thank you!
    Edited by: user3933488 on Jan 8, 2010 12:53 PM

    You created the materialized view logs with some columns, which is not necessary when creating a join MV on top of them. You can happily skip those in your MV log definition. And then it becomes clear that those columns are not involved in the decision whether a MV log needs to be updated or not. Everything that happens to the base table gets recorded. The "WITH ROWID" and "INCLUDING NEW VALUES" and the column list only specify WHAT should be recorded when something changed.
    Regards,
    Rob.

  • Performance consequences to adding materialized view logs to tables?

    I am writing a very complex query for a client of our transactional database system and this will require the creation of a materialized viewbecause all attempts at tuning to make performance acceptable have failed.
    I want to enable fast refresh of the MVIEW but I am confused regarding the consequences of the addition of adding materialized view logs to the base tables.
    Some of the tables are large and involved in alot of transactions and I am wondering if the performance of INSERT/UPDATES will be seriously affected by the presence of an mview log.
    This may be a simple question to answer but I was unable to find a clear cut answer in the literature.
    Thanks for any answers!!
    Chris Mills
    Biotechnology Data Management Consultant

    Last time i looked into this there were three cases to consider
    If you're doing conventional row-by-row DML then the impact is just one insert into a heap table per row modified.
    If you are modifying a high number of rows using bulk-binds then the overhead is very severe because modifying 1,000 rows on the base table causes 1,000 non-bulk bound inserts into the log table.
    Direct path inserts have extremely low overhead because the MV log is not touched. Instead, the range of new rowids added is logged in ALL_SUMDELTA
    http://oraclesponge.wordpress.com/2005/09/15/optimizing-materialized-views-part-ii-the-direct-path-insert-enhancement/

  • Can't update master table when creating a materialized view log.

    Hi all,
    I am facing a very strange issue when trying to update a table on which I have created a materialized view log (to enable downstream fast refresh of MV's). The database I am working on is 10.2.0.4. Here is my issue:
    1. I can successfully update (via merge) a dimension table, call it TABLEA, with 100k updates. However when I create a materialized view log on TABLEA the merge statement hangs (I killed the query after leaving it to run for 8 hrs!). TABLEA has 11m records and has a number of indexes (bitmaps and btree) and constraints on it.
    2. I then create a copy of TABLEA, call it TABLEB and re-created all the indexes and constraints that exist on TABLEA. I created a materialzied view log on TABLEB and ran the same update....the merge completed in under 5min!
    The only difference between TABLEA and TABLEB is that the dimension TABLEA is referenced by a number of FACT tables (by FKs on the FACTS) however this surely should not cause a problem. I don't understand why the merge on TABLEA is not completing...even though it works fine on its copy TABLEB? I have tried rebuilding the indexes on TABLEA but this did not work.
    Any help or ideas on this would be most appreciated.
    Kind Regards
    Mitesh
    email: [email protected]

    Thats what I thought, the MVL will only read data that has changed since it was created and wont have the option to load in all the data as though it was made before the table was created.
    From what I have read, the MVL is quicker than a Trigger and I have some free code that prooved to work from a MVL using it as a reference to know what records to update. There is not that much to a MVL, a record ID and type of update, New, Update or Delete.
    I think what I will have to do is work on a the same principle for the MVL but use a Trigger as this way we can do a full reload if required at any point.
    Many thanks for your help.

  • ORA-12096: error in materialized view log on a table

    Hi while updating a table getting below error
    ORA-12096: error in materialized view log on "FII"."FII_GL_JE_SUMMARY_B"
    What might be the problem.
    Thanks.

    might be table definition has changed, you may need to drop the mview log and recreate it.

  • Truncate table and materialized view log

    I user oracle 10 R2
    I have a table and on that table a materialized view log.
    I execute in a pl/sql procedure:
    1) execute immediate('drop materialized view log on tab1');
    then:
    2) execute immediate('truncate table tab1');
    3) Now I insert a lot of records in tab1
    4) execute immediate('create materialized view log on tab1 WITH rowid INCLUDING NEW VALUES');
    When I create the materialized view log I recieved this message:
    ora32321: refresh fast on tab2 unsupported after detail table truncate
    Why?

    Refresh fast after truncate operation on container table is not supported, regardless the container table is or is not partitioned.
    Perform a refresh complete.
    ORA-32321 :
    Cause:     A detail table has been truncated and no materialized view
         supports fast refersh after a detail table has been truncated
    Action:     Use REFRESH COMPLETE. Note: you can determine why your
         materialized view does not support fast refresh after TRUNCATE
         using the DBMS_MVIEW.EXPLAIN_MV() API.

  • ! Materialized View log VS Trigger to trace table changes !

    Hi All
    I have to trace changes on couple tables and only those changes then send to other system.
    What do you think is better solution to create a Status table and update it via trigger.
    I saw that MV log can be used for such purpose, but I am not able to create a MV logging on more than one table.
    Or is there any other more effective way to trace changes on table?
    Thanks a lot
    Martin

    It sounds like you should be looking at something like Change Data Capture (CDC). You could also create materialized view logs on each table where you wanted to track changes, create appropriate materialized views on the remote database, and consume the data there. It really depends on what exactly you want to do with the changes you're tracking.
    Justin

  • Creation of Materialized view and Materialized view log.

    I wanted to create materialized view with 'REFRESH FAST ON COMMIT' option.
    1) Table1 --it is partitioned range + list -- Added primary key
    2) view1   -- having primary keys on view's base table
    Steps:
    1) create materialized view log on Table1 ; -- default primary key
    2) create materialized view log on view1.  --- It is giving below error.
    ORA-00942: table or view does not exist
    i wanted to create Materialized view like below
    create materialized view
    REFRESH fast ON commit
    as
    select ...
    ... from table1
    where c1 in (select c1 from view1 where ... );
    Question:
    1) As i am getting above error while creating MV log on view. Can we create MV log on view or we have to create MV log on view base table?
    2) To create MV with ''REFRESH FAST ON COMMIT' option , do we need to have primary key on master tables? 
    Any pointers on this will really helpful.
    Thanks
    Prasad

    Also created MV LOG on 3 tables and tried with joins ..
    create materialized view
    REFRESH fast ON commit
    as
    select ...
    ... from table1 , tab2 t2,tab3 t3
    where ....
    and ...
    Get same error ORA-12052: cannot fast refresh materialized view AVSYS.EVENT_LOG_MV
    2052. 00000 -  "cannot fast refresh materialized view %s.%s"
    *Cause:    Either ROWIDs of certain tables were missing in the definition or
               the inner table of an outer join did not have UNIQUE constraints on
               join columns.
    *Action:   Specify the FORCE or COMPLETE option. If this error is got
               during creation, the materialized view definition may have be
               changed. Refer to the documentation on materialized views.

Maybe you are looking for

  • Stock Transfer of Returnable Packing Material - CRATE

    Dear Sap gurus, This process involve into a dairy industry, They sell of fresh milk pdoduct like Chaach, Paneer & Shrikhand  at Manufacturing plant as well as Parlours . Now, as per the business process, my client wants to do stock transfer of these

  • Drilldown reports in Accounts Payable

    I am trying to add the discount amount (BSEG-WSKTO) to the output of the S_ALR_87012078 report. The requirement is to have the age wise discount amount as an additional column. I have copied the form 0SAPDUEAN-01 (FKI4 transaction)and create a new dr

  • Problem with Tables

    InDesign CS5.5 Opening a blank document. Creating 3 Paragraph styles: "Table Header" (bold font), "Table Footer" (italic font), "Table Body" (normal font). Creating 3 Cell styles: "Header" (black fill), "Footer" (gray fill), "Body" (white fill). Assi

  • Health Check on 11.5.9

    Hi Friends, I want to do Health check on my E-Business suite 11.5.9(both Database and Application) please suggest how to do? Regards, Arun

  • What is the criteria for buying an iphone?

    I heard that to buy an iphone you need a contract? Is that true? and what is the meaning of having a contract when buying an iphone? and can one buy an iPhone without a contract?