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
Similar Messages
-
We are having issues with the size of materialized view logs in one od the database. The size of the log table is around 32G. Will appreciate if somebody will help in explaining why it is having such a huge size and is not getting purged.
At the same time the master table is having comparatively smaller size of 18G(did not check table fragmentation).
Also, please help me in understanding what is required to be done for fixing this issue.
SQL> select LOG_OWNER,MASTER,LOG_TABLE,LOG_TRIGGER,PRIMARY_KEY from dba_mview_logs where log_owner='MARTDATA' and MASTER='POLICY_CONFIGURATION';
LOG_OWNER MASTER LOG_TABLE LOG_TRIGGER PRI
MARTDATA POLICY_CONFIGURATION MLOG$_POLICY_CONFIGURATION NO
SQL> select owner, segment_name, sum(bytes)/1024/1024 "SIZE in MB" from dba_segments where segment_name='POLICY_CONFIGURATION' and owner ='MARTDATA' group by owner, segment_name;
OWNER SEGMENT_NAME SIZE in MB
MARTDATA POLICY_CONFIGURATION 18458
SQL> select owner, segment_name, sum(bytes)/1024/1024 "SIZE in MB" from dba_segments where segment_name='MLOG$_POLICY_CONFIGURATION' and owner ='MARTDATA' group by owner, segment_name;
OWNER SEGMENT_NAME SIZE in MB
MARTDATA MLOG$_POLICY_CONFIGURATION 32298
ThanksOracle automatically purges rows in the materialized view log when they are no longer needed. Because Oracle must wait for all dependent materialized views to refresh before purging rows from a materialized view log, unwanted situations can occur that cause a materialized view log to grow indefinitely when multiple materialized views are based on the same master table or master materialized view.
For example, such situations can occur when more than one materialized view is based on a master table or master materialized view and one of the following conditions is true:
Materialized view is not configured for automatic refreshes and has not been manually refreshed for a long time. OR
Materialized view has an infrequent refresh interval, such as every year, etc
You can also refresh the materialized views associated with the log so that Oracle can purge rows from the materialized view log.
If a materialized view log needs to be purged manually for some reason a procedure called DBMS_MVEW.PURGE_LOG can be used.
Edited by: user130038 on Sep 30, 2011 6:49 AM -
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 (fast refresh mode) + Materialized view log on another DB
Hi all,
I created a materizalied view using this script :
CREATE MATERIALIZED VIEW GIPS.DOSSIER_MEDICAL_MV2
TABLESPACE GIPS_T
NOCACHE
NOLOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
USING INDEX
TABLESPACE GIPS_I
+ REFRESH FAST ON DEMAND +
START WITH TO_DATE('11-janv.-2011 16:00:00','dd-mon-yyyy hh24:mi:ss')
NEXT sysdate (1/96)+
AS
SELECT N0_SEQ_BLOB_PDF,
EXAM_ID,
MPR,
RSM,
rub,
date_deb,
SPE,
commentaire,
SPR,
MEP,
MSJ,
TTD,
exam_type
FROM DOSSIER_MEDICAL@dbdoc_lk
WHERE DOSSIER_MEDICAL.EXAM_TYPE IN ('TELEM', 'SCANNER', 'EPPO_SECMED');
So you can see I'm using a dblink in the select statement ( DBDOC_LK )
On the DB referenced by this dblink, I created a materialized view log using this script :
CREATE MATERIALIZED VIEW LOG ON "DOSMED"."DOSSIER_MEDICAL"
TABLESPACE "DOC_T"
WITH PRIMARY KEY
INCLUDING NEW VALUES;
The problem is that my materialized view has never refreshed since its creation ! and I don't understand why ?
Can someone help me ?
Thank you.The REFRESH schedule causes a job to be created for the execution of the Refresh. You should see this job in DBA_JOBS / USER_JOBS.
The job would run only if the instance parameter JOB_QUEUE_PROCESSES is set to 1 or higher (the default is 0). This parameter can be modified dynamically with an ALTER SYSTEM command.
Hemant K Chitale
http://hemantoracledba.blogspot.com -
How to CREATE MATERIALIZED VIEW LOG (MV fast refresh) with some JOINS
Hi @ all,
i'm trying to create a MATERIALIZED VIEW LOG for a fast refresh of a MATERIALIZED VIEW.
It works fine with a simple Request in the MATERIALIZED VIEW:
CREATE MATERIALIZED VIEW MV_ZOTD43_P
TABLESPACE GDII
BUILD IMMEDIATE
REFRESH FORCE AS
SELECT * FROM ZOTD43_P;
COMMIT;
CREATE MATERIALIZED VIEW LOG ON ZOTD43_P
TABLESPACE "GDII"
WITH PRIMARY KEY, ROWID, SEQUENCE INCLUDING NEW VALUES;
call DBMS_MVIEW.REFRESH('MV_ZOTD43_P', 'f');
But when I use a complex SQL-Request with some JOINS (one of the Table with spatial Data) in the MATERIALIZED VIEW, I get an error:
CREATE MATERIALIZED VIEW MV_TEST
TABLESPACE GDII
BUILD IMMEDIATE
REFRESH FORCE AS
SELECT lptd04_p.sst_nr AS sst_nr,
lptd03_p.aaaa AS aaaa,
lptd04_geom.geom as geom
FROM lptd04_p lptd04_p
JOIN lptd01_p lptd01_p ON lptd01_p.cre_nr = lptd04_p.sst_nr
JOIN lptd04_geom ON lptd04_geom.sst_nr = lptd04_p.sst_nr
JOIN lptd03_p lptd03_p ON lptd03_p.lief_nr = lptd04_p.lief_nr;
COMMIT;
CREATE MATERIALIZED VIEW LOG ON LPTD04_P
TABLESPACE "GDII"
WITH PRIMARY KEY, ROWID, SEQUENCE INCLUDING NEW VALUES;
call DBMS_MVIEW.REFRESH('MV_TEST', 'f');
Error report:
SQL Error: ORA-12004: REFRESH FAST kann für Materialized View "GDI"."MV_GDI_SST_STAMM" nicht benutzt werden
ORA-06512: in "SYS.DBMS_SNAPSHOT", Zeile 2255
ORA-06512: in "SYS.DBMS_SNAPSHOT", Zeile 2461
ORA-06512: in "SYS.DBMS_SNAPSHOT", Zeile 2430
ORA-06512: in Zeile 1
12004. 00000 - "REFRESH FAST cannot be used for materialized view \"%s\".\"%s\""
*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.
Am I doing something wrong or is it not possible CREATE MATERIALIZED VIEW LOG when the MATERIALIZED VIEW got some JOINS?
Regards,
GreqThanks for the link Alessandro ,
the error seems something to do with the Column-Type SDO_GEOMETRY, so
i create a new thread in the Spatial Discussion forum:
FAST REFRESHing of Oracle Materialized Views containing SDO_GEOMETRY column
Regards,
Greq -
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
PrasadAlso 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. -
Help with sql query on materialized view logs
I am in need of a query to find out what tablespace and snap shot site a long list of materialized view logs are associated with.
something like below except tablespace and snap_shot_site are not an option for this table.
select log_owner, master, log_table, tablespace, snap_shot_site from dba_mview_logs;What is the refresh method set as?
Could you paste the full MV log creation script and the corresponding MV creation script. -
Query on Materialized View Logs
We need a denormalised data step-up, we decided on implementing Materialized Views and started working on them. I have created Materialized View log on a table using below mentioned syntax
CREATE MATERIALIZED VIEW LOG ON <table_name> WITH ROWID
I have tested it and its working fine.A Strange error I am facing is, after an hour or so the materialised view gets corrupted and applicatin users gets an error saying error with the materialised view log.
The log entry in the data dictionary gets deleted. Later I have to execute DROP on the log to completely remove it.
I am confused how this can happen.What is the refresh method set as?
Could you paste the full MV log creation script and the corresponding MV creation script. -
Query on Materialized view and materialized view log
I am creating a materialized view something like this.but getting following error:
ERROR at line 1:
ORA-12032: cannot use rowid column from materialized view log on "SCOTT"."EMP"
SQL> create snapshot log on scott.emp;
Materialized view log created.
SQL> create materialized view scott_emp refresh fast on demand as select deptno,sum(sal) sum_sal from scott.emp group by deptno;
ERROR at line 1:
ORA-12032: cannot use rowid column from materialized view log on "SCOTT"."EMP"
Note when i have my query in materialized view as "select * from emp;" in place of
"select deptno,sum(sal) sum_sal from scott.emp group by deptno;" This code works fine.
How do i have a materialized with with a group by clause.
Thanks in AdvanceGot the answer myself.
I wasnt adding all the required columns.
CREATE MATERIALIZED VIEW LOG ON scott.emp
WITH SEQUENCE, ROWID (<all the required columns>)
INCLUDING NEW VALUES;
Anyways,
Thanks guys... -
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. -
Reg ora-12034 materialized view log on younger than last refresh
Hi,
when i update my base table materialized view log shows the updated rows
but when i refresh materialized view it wont show updated rows in materialized view and also there is no rows in materialzed log
it shows error ora-12034: materialized view log on younger than last refresh
cheers,FIX
A complete refresh is required before the next fast refresh.
Please run the process "Refresh Materialized Views" -
Identifying updated column in materialized view logs
Hi all,
I created a materialized view log for a table with three columns(say colA,colB,colC). Is there any way to identify which column got updated among these three columns? through the entries in mat view logs?
any inputs on this ll be of great help.
Thanks in advance.
gopiCan someone tell me about M_ROWS$$ column in Materialized view.
I am in confucion. -
ORA-12096: error in materialized view log
Hi All,
I had created a fast refresh materialized view. Log was also created.
Now i dropped the mv and the logs.
But now every time i update or insert into this customer table i get error message.
ORA-12096: error in materialized view log on Customer
ORA-00942: table or view does not exist
There are entries in the DBA_MVIEW_LOGS for customer table.
Please suggest.Hi,
What database version are you on?
And do you have access to Metalink/My Oracle Support?
Found this, by the way:
ORA-12096: error in materialized view log on <table>
If problems occur when you try to access a log file for a materialized view, the system issues an ORA-12096 error message which is followed by the actual error. If the ORA-12096 error message is accompanied by an ORA-00942 message, the problem may be due to an online reorganization that was only partially undone. In this case, you can drop the log file for the materialized view manually (after you have verified that it is no longer required):
DROP MATERIALIZED VIEW LOG ON <table>;
Edited by: hoek on Jul 29, 2009 2:15 PM -
ORA-12096: error in materialized view log on ORA-01301:insufficient privile
Hi,
One of our ebusiness Apps 11510 instances has database that was
upgraded from 9.2.0.6 to 10.2.0.4 with Database Vault.
After that, we are getting an error:
ORA-12096: error in materialized view log on "SCHEMA"."TABLE_NAME" ORA-01301:insufficient privileges
Can you please let know what can be the reason. Which user is being checked for the privileges?
RegardsI am facing the same issue in one of our internal instances.
Apps Environment has been upgraded from Database 9.2.0.6 to Database 10.2.0.4 with Database Vault. We started facing this issue and the same error after the upgrade. MLOG definition has not changed.
What privilege is it expecting to be present for the schema.
The definition of the MLOG is as given below
LOG_TRIGGER = NULL
ROWIDS = YES
PRIMARY_KEY = NO
OBJECT_ID = NO
FILTER_COLUMNS = NO
SEQUENCE = NO
INCLUDE_NEW_VALUES = NO -
INCLUDING NEW VALUES in materialized view log
CREATE MATERIALIZED VIEW products_mv
REFRESH FAST ON COMMIT
AS SELECT SUM(list_price - min_price), category_id
FROM product_information
GROUP BY category_id;
Could anybody tell me why INCLUDING NEW VALUES are necessary in materialized view log for such an aggregate materialized view?
Thanks,
P.Answer depends on your need; do you need these values on your mv log -
http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/basicmv.htm#sthref545
Best regards.
Maybe you are looking for
-
How to change the dynamically LOV value to old value if it errors out
We have an use case like when a value is selected from LOV, some validations(EO validations) occur on that and if the validation fails we are throwing exception.But the new value is appearing in LOV text box. We need to display the old value in the L
-
Clean Install Solaris 10 05/09 - Update Manager Fails with Valid Acct
I have a clean install of Solaris 10 05/09, and Update Manager fails to register using a valid accout which I can login with at the Sun website. Why is this happening? How can this be fixed?
-
Subcontracting of an operation
Hello All Am having a scenario wherein to produce a FG there are five operations and fourth operation is subcontracted to the vendor. I shall explain the exact scenario here: Client is manufacturing a Brass Terminal(FG) and to produce this
-
Apps can,t move to SD card in KitKat is, HP 7 voice tab with 4.71 GB storage
Apps unable to move SD card KitKat version in HP 7 voice tab Please dove this issue
-
"Reciprocity failure" in digital photography?
Slightly off topic but there's a lot of good knowledge here so I was hoping to take advantage of it. Those of us who shot (or shoot) film are aware of reciprocity failure, as light levels get very low and exposure times increase the film doesn't beha