Commit performance on table with Fast Refresh MV
Hello worldTry to wrap your head around fast refresh performance and why I see (what I consider) high disk numbers / query associated with the update of the MV_LOG in a TKPROF.
The installation program.
(Oracle 10.2.0.4.0)
Database table:
SQL> desc action;
Name Null? Type
----------------------------------------- -------- ----------------------------
PK_ACTION_ID NOT NULL NUMBER(10)
CATEGORY VARCHAR2(20)
INT_DESCRIPTION VARCHAR2(4000)
EXT_DESCRIPTION VARCHAR2(4000)
ACTION_TITLE NOT NULL VARCHAR2(400)
CALL_DURATION VARCHAR2(6)
DATE_OPENED NOT NULL DATE
CONTRACT VARCHAR2(100)
SOFTWARE_SUMMARY VARCHAR2(2000)
MACHINE_NAME VARCHAR2(25)
BILLING_STATUS VARCHAR2(15)
ACTION_NUMBER NUMBER(3)
THIRD_PARTY_NAME VARCHAR2(25)
MAILED_TO VARCHAR2(400)
FK_CONTACT_ID NUMBER(10)
FK_EMPLOYEE_ID NOT NULL NUMBER(10)
FK_ISSUE_ID NOT NULL NUMBER(10)
STATUS VARCHAR2(80)
PRIORITY NUMBER(1)
EMAILED_CUSTOMER TIMESTAMP(6) WITH LOCAL TIME
ZONE
SQL> select count(*) from action;
COUNT(*)
----------
1388780
MV was createdcreate materialized view log on action with sequence, rowid
(pk_action_id, fk_issue_id, date_opened)
including new values;
-- Create materialized view
create materialized view issue_open_mv
build immediate
refresh fast on commit
enable query rewrite as
select fk_issue_id issue_id,
count(*) cnt,
min(date_opened) issue_open,
max(date_opened) last_action_date,
min(pk_action_id) first_action_id,
max(pk_action_id) last_action_id,
count(pk_action_id) num_actions
from action
group by fk_issue_id;
exec dbms_stats.gather_table_stats('tg','issue_open_mv')
SQL> select table_name, last_analyzed from dba_tables where table_name = 'ISSUE_OPEN_MV';
TABLE_NAME LAST_ANAL
------------------------------ ---------
ISSUE_OPEN_MV 15-NOV-10
*note: table was created a couple of days ago *
SQL> exec dbms_mview.explain_mview('TG.ISSUE_OPEN_MV');
CAPABILITY_NAME P REL_TEXT MSGTXT
------------------------------ - -------- ------------------------------------------------------------
PCT N
REFRESH_COMPLETE Y
REFRESH_FAST Y
REWRITE Y
PCT_TABLE N ACTION relation is not a partitioned table
REFRESH_FAST_AFTER_INSERT Y
REFRESH_FAST_AFTER_ANY_DML Y
REFRESH_FAST_PCT N PCT is not possible on any of the detail tables in the mater
REWRITE_FULL_TEXT_MATCH Y
REWRITE_PARTIAL_TEXT_MATCH Y
REWRITE_GENERAL Y
REWRITE_PCT N general rewrite is not possible or PCT is not possible on an
PCT_TABLE_REWRITE N ACTION relation is not a partitioned table
13 rows selected.
Fast refresh works fine. And the newspaper is kept small enough.SQL> select count(*) from mlog$_action;
COUNT(*)
----------
0
When I update a row in the base table:var in_action_id number;
exec :in_action_id := 398385;
UPDATE action
SET emailed_customer = SYSTIMESTAMP
WHERE pk_action_id = :in_action_id
AND DECODE(emailed_customer, NULL, 0, 1) = 0
/
commit;
What follows, I get via tkprof.********************************************************************************
INSERT /*+ IDX(0) */ INTO "TG"."MLOG$_ACTION" (dmltype$$,old_new$$,snaptime$$,
change_vector$$,sequence$$,m_row$$,"PK_ACTION_ID","DATE_OPENED",
"FK_ISSUE_ID")
VALUES
(:d,:o,to_date('4000-01-01:00:00:00','YYYY-MM-DD:HH24:MI:SS'),:c,
sys.cdc_rsid_seq$.nextval,:m,:1,:2,:3)
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.01 0 0 0 0
Execute 2 0.00 0.03 4 4 4 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 0.00 0.04 4 4 4 2
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
2 SEQUENCE CDC_RSID_SEQ$ (cr=0 pr=0 pw=0 time=28 us)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file sequential read 4 0.01 0.01
********************************************************************************
********************************************************************************
update "TG"."MLOG$_ACTION" set snaptime$$ = :1
where
snaptime$$ > to_date('2100-01-01:00:00:00','YYYY-MM-DD:HH24:MI:SS')
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.01 0 0 0 0
Execute 1 0.94 5.36 55996 56012 1 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.94 5.38 55996 56012 1 2
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
0 UPDATE MLOG$_ACTION (cr=56012 pr=55996 pw=0 time=5364554 us)
2 TABLE ACCESS FULL MLOG$_ACTION (cr=56012 pr=55996 pw=0 time=46756 us)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file scattered read 3529 0.02 4.91
********************************************************************************
select dmltype$$, max(snaptime$$)
from
"TG"."MLOG$_ACTION" where snaptime$$ <= :1 group by dmltype$$
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.70 0.68 55996 56012 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.70 0.68 55996 56012 0 1
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
1 SORT GROUP BY (cr=56012 pr=55996 pw=0 time=685671 us)
2 TABLE ACCESS FULL MLOG$_ACTION (cr=56012 pr=55996 pw=0 time=1851 us)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file scattered read 3529 0.00 0.38
********************************************************************************
delete from "TG"."MLOG$_ACTION"
where
snaptime$$ <= :1
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.71 0.70 55946 56012 3 2
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.71 0.70 55946 56012 3 2
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS (recursive depth: 1)
Rows Row Source Operation
------- ---------------------------------------------------
0 DELETE MLOG$_ACTION (cr=56012 pr=55946 pw=0 time=702813 us)
2 TABLE ACCESS FULL MLOG$_ACTION (cr=56012 pr=55946 pw=0 time=1814 us)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
db file scattered read 3530 0.00 0.39
db file sequential read 33 0.00 0.00
********************************************************************************
Could someone explain why the the SELECT/UPDATE/DELETE on MLOG$ _ACTION if 'expensive' when it should be only 2 rows (the old value and the new value) in this newspaper after an update? I could do to improve the performance of the update?Let me know if you need more info... would be happy to provide.
My guess would be that you were once a very large transaction that inserted a large number of rows in this table. So the table segment is big enough now and the high watermark is average at the end of this segment, causing a full scan table to analyze a large number of empty blocks and retrieve the two lines.
You can issue a truncation on this table of $ MLOG: which would free up the empty blocks and brings back the high-watermark in the first block.
Tags: Database
Similar Questions
-
Listagg works does not in mview with fast refresh on commit?
Version Info:
Oracle Database 11 g Release 11.2.0.3.0 - 64 bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE Production 11.2.0.3.0
AMT for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
I have a materialized view that is defined as fast refresh on validation and includes a call to listagg. The update goes as planned, but the value of the column that is created by using the listagg not updated unless I have make an explicit refresh. I was able to recreate the problem with a simple case, pasted below. Someone knows how to fix this?
Thank you!
-Tom
Test scenario follows...
SQL> create table codes ( 2 id number primary key, 3 product varchar2(10) not null, 4 code varchar2(10) not null); Table created. SQL> create materialized view log on codes with rowid, sequence (product, code) including new values; Materialized view log created. SQL> create materialized view code_agg_mv 2 refresh fast on commit 3 with rowid 4 as 5 select c.product 6 , listagg(c.code, ',') within group (order by c.code) codes 7 , count(*) cnt 8 from codes c 9 group by c.product; Materialized view created. SQL> truncate table mv_capabilities_table; Table truncated. SQL> begin 2 dbms_mview.explain_mview('CODE_AGG_MV'); 3 commit; 4 end; 5 / PL/SQL procedure successfully completed. SQL> select capability_name, possible 2 from mv_capabilities_table 3 where capability_name like '%REFRESH%' 4 order by capability_name; CAPABILITY_NAME P ------------------------------ - REFRESH_COMPLETE Y REFRESH_FAST Y REFRESH_FAST_AFTER_ANY_DML Y REFRESH_FAST_AFTER_INSERT Y REFRESH_FAST_AFTER_ONETAB_DML Y REFRESH_FAST_PCT N 6 rows selected. SQL> insert into codes (id, product, code) values (1, 'Pants', 'Large'); 1 row created. SQL> insert into codes (id, product, code) values (2, 'Pants', 'Blue'); 1 row created. SQL> insert into codes (id, product, code) values (3, 'Pants', 'Itchy'); 1 row created. SQL> commit; Commit complete. SQL> select * 2 from code_agg_mv; PRODUCT CODES CNT ---------- ------------------------------ ---------- Pants Blue,Itchy,Large 3 SQL> -- ^^^ This is correct ^^^ SQL> delete from codes where id = 3; 1 row deleted. SQL> commit; Commit complete. SQL> select * from code_agg_mv; PRODUCT CODES CNT ---------- ------------------------------ ---------- Pants Blue,Itchy,Large 2 SQL> -- ^^^ CNT is correct, but codes should not contain "Itchy" ^^^ SQL> -- SQL> -- Try an explicit fast refresh... SQL> begin 2 dbms_mview.refresh('CODE_AGG_MV', 'F'); 3 end; 4 / PL/SQL procedure successfully completed. SQL> select * from code_agg_mv; PRODUCT CODES CNT ---------- ------------------------------ ---------- Pants Blue,Itchy,Large 2 SQL> -- ^^^ Nope, same issue. ^^^ SQL> -- SQL> -- Try an explicit complete refresh... SQL> begin 2 dbms_mview.refresh('CODE_AGG_MV', 'C'); 3 end; 4 / PL/SQL procedure successfully completed. SQL> select * from code_agg_mv; PRODUCT CODES CNT ---------- ------------------------------ ---------- Pants Blue,Large 2 SQL> -- ^^^ There we go. ^^^
Message edited by Tom N to include database version information.
Hello Tom,
listagg() is not supported for fast refresh.
http://docs.Oracle.com/CD/E11882_01/server.112/e25554/basicmv.htm#i1007028
Only SUM, COUNT, AVG, STDDEV, VARIANCE, MIN and MAX are supported to fast refresh.
Kind regards
Pravin
-
ADF table with checkbox refresh data binding problem
Hello.
I use JDeveloper 11.1.1.3. I need to use the table with checkboxes in each row of the table in my project. I use VO with transitional 'Selected' attribute that has a boolean type.
Everything works well, wait one thing:
When you click checbox with valueChangeListener and try to get the selected line in the managedBean you won't get any selected lines. After selecting second maaged bean evil shows that 1 single line is selected. It's my managedBean method:
public void SelectCountyClick (ValueChangeEvent valueChangeEvent) {}
DCIteratorBinding it = ADFUtils.findIterator (ITERATOR_NAME);
int selectedRowCount = 0;
RowSetIterator laughs = it.getRowSetIterator ();
Line r = rit.first ();
If (r! = null) {}
If ((Boolean) r.getAttribute ("Selected"))
selectedRowCount ++;
}
While (rit.hasNext ()) {}
r = rit.next ();
If ((Boolean) r.getAttribute ("Selected"))
selectedRowCount ++;
}
System.out.println ("selected all THE LINES:" + selectedRowCount);
}
I tried to change this event to the client event, I got the line number, I put 'true' or 'false' to the code data binding, but whenever I can't correct data after the value change event.
Please help me.
The latest idea is updated databing after click of checkbox, I think. Please help me.
Thank you!You must go through the concepts of life cycle of page ADF. In simple terms the Boolean value in the model is not defined in valueChangeListener. Try adding (.processUpdates) valueChangeEvent.getComponent (FacesContext.getCurrentInstance ()); on top of your listener method and see the effect.
Reference:
http://docs.Oracle.com/CD/E15051_01/Web.1111/b31974/adf_lifecycle.htm -
View materialized with fast refresh and CLOB
People,
I have a table named ABC in a database named D1. This table has a CLOB column named CLOBCOL.
I'm trying to replicate ABC table in the database of D2 using dblink.
So, I tried to create Materialized View ABCMV of database D2 using the dblink. But cannot create because of the CLOB data type.
Yes, thought of creating discovered first in database D1 and then create Materialized View in the database D2.
But, the problem is that if I do, then the materialized view cannot be "refresh quickly" because he has materialized view log. Now, as this materialized view is supposed to rest on the view to D1, where and how can I create materialized view log.
Help, please.
Hello
How about this trick - don't know if you can change your table in the source?
TEST@DEMODB > alter table test add col4 as (DBMS_LOB. SUBSTR (col3, 500, 1)) virtual;
Modified table.
Test2@DEMODB > create a materialized view rich quickly updated with rowid as select col1, col2, col4 test@demo;
Materialized view created.
TEST2@EETGRID >
See you soon,.
Rich
-
Failed to create the fast refresh on the materialized view
Hi, I am creating a materialized on the tables with fast refresh view on commit but I get an error message.
I have created the following logs:
Bonus CREATE MATERIALIZED VIEW LOG ON
Users TABLESPACE
WITH THE PRIMARY KEY
INCLUDING THE NEW VALUESUsed to CREATE MATERIALIZED VIEW LOG ON
Users TABLESPACE
WITH THE PRIMARY KEY
INCLUDING THE NEW VALUESI then try to create the following:
Test.BAM CREATE MATERIALIZED VIEW
IMMEDIATE CONSTRUCTION
COOL OFF QUICKLY ON COMMIT
AS
SELECT a.dept_no, SUM (a.salary)
EMPLOYEE a, b bonus
WHERE a.employee_id = b.employee_id
GROUP BY dept_noWhen I do that, I get the following error:
. ORA-12032: cannot use column rowid of materialized
view log on 'test '. "" BONUS ".
If I change to a full refresh, it works pretty well. If I create a MV with a fast refresh on a query just within the limits of the table bonus it also works very well, for example ' select * bonus where employee_id = 2'
What I am doing wrong? Also when looking at the notes for MV connects in some places, he said using the primary key and others, he says to the sequence of use and row_id. Which is correct and what difference does it make?
11.2 aix.
Thank you very much
I suggest that investigate you the reason why your MV is not quickly updatable with the following method:
(1) create MV_CAPABILITIES_TABLE with @?/rdbms/admin/utlxmv.sql
(2) exec ('BAM') dbms_mview.explain_mview
3)
column format a100 msgtxt
column related_text format a20
SELECT the possible, capability_name, related_text,
msgtxt
OF mv_capabilities_table;
That should tell you the reason why he isn't yet quickly updatable.
There was a popular quote on men and fishing, but I don't remember it for now :-)
Kind regards
Uwe Hesse
-
materialized wiev fast refresh every minute
Hello, I need create mv and this mv need auto fast refresh every minute.
I first create the table 3
first:
CREATE TABLE 'HR '. "' EMPLOYEES '.
(NUMBER (6.0) "EMPLOYE_ID",)
VARCHAR2 (20 BYTE) "FIRST NAME",
VARCHAR2 (25 BYTE) "NAME."
VARCHAR2 (25 BYTE) "E-MAIL."
"PHONE_NUMBER" VARCHAR2 (20 BYTE),
'HIRE_DATE' DATE,
"JOB_ID' VARCHAR2 (10 BYTE),
"SALARY" NUMBER (8,2).
NUMBER (2.2) "COMMISSION_PCT."
NUMBER (6.0) "MANAGER_ID."
"DEPARTMENT_ID" NUMBER (4.0)
)
Second:
CREATE TABLE 'HR '. "" DEPARTMENTS. "
("DEPARTMENT_ID" NUMBER (4,0),)
VARCHAR2 (30 BYTE) "DEPARTMENT_NAME."
NUMBER (6.0) "MANAGER_ID."
NUMBER (4,0) 'LOCATION_ID '.
)
Thirdly:
CREATE TABLE 'HR '. "' LOCATIONS '.
(NUMBER (4,0) 'LOCATION_ID',)
'ADRESSE_RUE' VARCHAR2 (40 BYTE),
"ZIP_CODE" VARCHAR2 (12-BYTE),
VARCHAR2 (30 BYTE) 'CITY ',.
VARCHAR2 (25 BYTE) "STATE_PROVINCE"
'COUNTRY_ID' TANK (2 BYTES)
)
can I create mv newspaper with rowid, become I refresh mv with quick setting
create log view materialized on EMPLOYEES with rowid.
create log view materialized on departments with rowid.
create log view materialized on the premises with rowid.
Finally, I create mv with fast refresh method
CREATE THE TEST_MV_1 MATERIALIZED VIEW
REFRESH QUICKLY START WITH sysdate + 0 NEXT (sysdate + 1/1440)
AS
Select EMPLOYEES. EMPLOYEE_id
departments.department_id
locations.location_id
EMPLOYEES.rowid EMPLOYEES
departments.rowid departments
locations.rowid locations
EMPLOYEES
ministries
places
where departments.manager_id (+) = EMPLOYEES. EMPLOYEE_ID
and departments.location_id = locations.location_id (+);
now I have my mv and I'm seeing or my mv running
SELECT
table_name,
TO_CHAR (LAST_REFRESH,'yyyy-MM-DD HH24:MI:SS) LAST_REFRESH
, to_char (sysdate,'yyyy-MM-DD HH24:MI:SS) sys_date
-Count (Name)
Of all_snapshots
where table_name = 'TEST_MV_1 '.
I get:
TABLE-NAME LAST_REFRESH SYS_DATE
------------------------------ ------------------- -------------------
TEST_MV_1 2015-09-01 17:56:10-2015-09-01 17:57:02
After 2 min
SELECT
table_name,
TO_CHAR (LAST_REFRESH,'yyyy-MM-DD HH24:MI:SS) LAST_REFRESH
, to_char (sysdate,'yyyy-MM-DD HH24:MI:SS) sys_date
-Count (Name)
Of all_snapshots
where table_name = 'TEST_MV_1 '.
TABLE-NAME LAST_REFRESH SYS_DATE
------------------------------ ------------------- -------------------
TEST_MV_1 2015-09-01 17:58:10 2015-09-01 17:59:05
then I insert the new record in the table
Insert employees
(EMPLOYE_ID,
FIRST NAME,
LAST_NAME,
E-mail
PHONE_NUMBER,
HIRE_DATE,
JOB_ID,
SALARY,
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID)
values
(515, 'Jennifer', 'Whalen', 'JWHALEN', '515.123.4444', to_date('1987.09.17','yyyy.mm.dd'), 'AD_ASST', null, 101, 10, 24000)
/
Commit
/
1 row inserted.
Validation complete.
and check again my last_refresh mv
SELECT
table_name,
TO_CHAR (LAST_REFRESH,'yyyy-MM-DD HH24:MI:SS) LAST_REFRESH
, to_char (sysdate,'yyyy-MM-DD HH24:MI:SS) sys_date
-Count (Name)
Of all_snapshots
where table_name = 'TEST_MV_1 '.
TABLE-NAME LAST_REFRESH SYS_DATE
------------------------------ ------------------- -------------------
TEST_MV_1 2015-09-01 17:59:10 -2015-09-01 17:59:30
affter 2 min
TABLE-NAME LAST_REFRESH SYS_DATE
------------------------------ ------------------- -------------------
TEST_MV_1 2015-09-01 17:59:10 -2015-09-01 18:02:12
and when I go to data mv I don't see my new data
Select * from TEST_MV_1
where EMPLOYEE_ID = 515
no selected line
Maybe someone can help me? I'm two weeks try fix it and lost all hope
I find:
My mv refreshed, but when I insert new data he collapsed
I ' am am ansver: when I try to refresh the MV with fuction
DBMS_REFRESH. Refresh (the "HO".) "TEST_MV_1" ');
I get the error
ORA-12008: error path refresh materialized view
ORA-00942: table or view does not exist
ORA-06512: at "SYS." DBMS_SNAPSHOT", line 2563
ORA-06512: at "SYS." DBMS_SNAPSHOT", line 2776
ORA-06512: at "SYS." DBMS_IREFRESH', line 685
ORA-06512: at "SYS." DBMS_REFRESH", line 195
ORA-06512: at line 2
00000 - "error in the path of refresh materialized view.
* Cause: Table SNAP$ _
reads lines of sight MVIEW$ _
, which is a view of the main table (the master can be on a remote site). Any
error in this way will cause this error when updating.
For updates of the Rapids, the
table. MLOG$ _ is also referenced.
* Action: Examine the other messages on the stack to find the problem.
See if SNAP objects $ _
, MVIEW$ _ ,. . @ , . MLOG$ _ @. There is always.
so I think that I can not select the HR data. MLOG$ _EMPLOYEES and another newspaper in the HR schema table
When I try to select * HR. MLOG$ _EMPLOYEES I get table emty (schema HO)
so I don't understand how I can not update quick MV when I log empty.
I therefore ask my db admin for more privileges to select the MV journal table
I do not know what admin Preobrajensky give to my diet, but it's a job.
dude thanks for the help
-
The problems of performance - query on a copy of a table is faster than the orig
Hi all
I have problems with a specific table (select) sql performance (costs 7800) (Oracle 10.2.0.4.0, Linux).
Then I copied the table 1:1 (same structure, the same data, the same indexes, etc.) within the same domain (, the user database, tablespace etc.) and gathered the table_stats with the same settings. The same query on the copied table is faster and costs are only 3600.
Gods sake why is the query on this new table faster?
I appreciate any idea.
Thank you!
FIBO
Edited by: user954903 the 13.01.2010 04:23alter table t enable row movement; alter table t shrink space; alter table t disable row movement;
-
Hello
I have a loop 'for' which can take different number of iterations according to the number of measures that the user wants to do.
Inside this loop, I'm auto-indexation four different 1 d arrays. This means that the size of the tables will be different in the different phases of the execution of the program (the size will equal the number of measures).
My question is: the auto-indexation of the tables with different sizes will affect the performance of the program? I think it slows down my Vi...
Thank you very much.
My first thought is that the compiler to the LabVIEW actually removes the Matlab node because the outputs are not used. Once you son upward, LabVIEW must then call Matlab and wait for it to run. I know from experience, the call of Matlab to run the script is SLOW. I also recommend to do the math in native LabVIEW.
-
Fill a table with the results of the refresh groups
Hello world
I need a little help.
I'm working on an Oracle 10.2.0.4 on windows.
I have a table I created like this:
Table name: DIM_REPLICA
COD_SEZ VCHAR2 (2)
NOME_SEZ VCHAR2 (20)
FLAG TANK (1)
DATE OF D_REPLICA
This DB I have 210 discount groups running every night. I need fill this table with the results of the refresh groups.
So when the refresh for example called ROME group runs I need to write on the table the name ROME in the field "NOME_SEZ", a Y or N if the refresh Group has worked in the field of the INDICATOR and LAST_DATE refresh force ran into the field of the D_REPLICA. The COD_SEZ field is a code that I get other things. It is not necessary for the moment. I can add it myself on my own.
Can someone help me please?
I was looking on the tables SYS DBA_JOBS and DBA_REFRESH these data, but I don't know what to take and how to fill the table. Trigger? Procedure? Any help will be great!
Thank you all in advance!This forum is for SQL * PLus, questions and your question is about general issues Oracle. You will get a better response by posting your question in another forum - probably the General database instance.
Please close this thread and start over in another forum.
-
Hi all
http://docs.Oracle.com/CD/B19306_01/server.102/b14223/basicmv.htm#i1006519
Fast refresh for a materialized view containing joins and aggregates is possible after any type of DML for the base tables (direct load or conventional
INSERT
,UPDATE
, orDELETE
). It can be set to refreshON
COMMIT
orON
DEMAND
. AREFRESH ON
COMMIT
materialized view will be updated automatically when a transaction that is DML to one of the details of the materialized view commits tables. The time required to perform the validation may be slightly longer than usual when this method is selected. This is because the refresh operation is performed as part of the validation process. Therefore, this method may not be suitable if many users at the same time change the tables on which is based the materialized view.1. I got this quote from the above link.
What is the refresh option by default when I use REFRESH QUICKLY? My example:
CREATE MATERIALIZED VIEW REFRESH QUICKLY ENABLE QUERY REWRITE AS mat_vw_test
SELECT *.
OF vw_test;
2 using the example 8-1 1 example: creating a materialized from the link view.
Product_sales_mv CREATE MATERIALIZED VIEW
REFRESH QUICKLY
ACTIVATE THE QUERY REWRITING
Did YOU SELECT p.prod_name, SUM (s.amount_sold) AS dollar_sales,
Count (*) AS cnt, COUNT (s.amount_sold) AS cnt_amt
S SALES, products p
WHERE s.prod_id = p.prod_id GROUP BY p.prod_name;
View of the mat will not be updated after a user execute INSERT, UPDATE, or UPDATE. fix?
How can I update the matte view after a DML statement is executed?
With the help of Oracle 11 g Release 11.2.0.4.0
Thanks in advance.
It was missing an index for a column in one of my big table.
Thanks for your help.
Best,
-
The Materialized View - ORA-12052: is unable to fast refresh materialized view
Hello
I was hitting my head all day trying to create materialized views. I have made some progress, but have hit a brick wall, unfortunately!
Basically, I have been invited to take a view and see if I can get the benefits of performance by transforming all or part of it in materialized views. Because the underlying tables of the config is updated quite frequently, I want to fast refresh materialized views on commit. However, when I try to create a materialized view containing an outer join in an aggregated materialized view table, I get ORA-12052: is unable to fast refresh materialized view.
I went through the documentation and also Rob van Wijkvery useful series of blogs on the topic (especially http://rwijk.blogspot.co.uk/2009/09/fast-refreshable-materialized-view.html) but have not found anything that matches. Maybe I missed something somewhere along the line, or maybe I'm asking just something completely impossible?
My db is 11.2.0.2.
Here's the test scripts, I've worked with that:
drop materialized view test1_test2_mv;
Drop materialized view test2 journal;
drop table test2;
Drop materialized view test1_mv newspaper;
drop materialized view test1_mv;
Drop materialized view test1 journal;
drop table test1;create table test1 (identification number,
type varchar2 (10),
number of Val,
update_time date,
constraint t1_pk primary key (id, type, val));
Insert into test1
Select 1, 'a', 1001, sysdate - 10/24 Union double all the
Select 1, 'b', 1003, sysdate - 9/24 Union double all the
Select 1, 'c', 1002, sysdate - 8/24 Union double all the
Select 1, had ', 1004, sysdate - 7/24 Union double all the
Select 1, 'e', 1005, sysdate - 6/24 Union double all the
Select 1, 'c', 1006, sysdate - 5/24 Union double all the
Select 2, 'a', 1002, sysdate - 4/24 Union double all the
Select 2, 'b', 1005, sysdate - 3/24 Union double all the
Select 3, 'a', 1001, sysdate - 2/24 Union double all the
Select 3, 'c', 1006, sysdate - 1/24 Union double all the
Select 3, 'e', 1008, sysdate - 2/24 Union double all the
Select option 4, has ', 1004, sysdate - 3/24 Union double all the
Select 5, 'b', 1002, sysdate - 4/24 Union double all the
Select 5, 'g', 1001, sysdate - 5/24 Union double all the
Select 6, 'h', 1004, sysdate - 6/24 Union double all the
Select 7, 'b', 1007, sysdate - 7/24 Union double all the
Select 7, had ', 1001, sysdate - 8/24 double;commit;
Select * from test1;
CREATE MATERIALIZED VIEW LOG ON test1
WITH rowid, primary key (update_time)
including the new values;
Test1_mv CREATE MATERIALIZED VIEW
IMMEDIATE CONSTRUCTION
COOL OFF QUICKLY ON COMMIT
Did YOU SELECT id,
MAX (case when type = "there" end of val) THAT col_a,.
MAX (case when type = 'b', then val end) AS col_b,.
MAX (case when type = 'c' then end val) AS col_c,.
MAX (case when type = ' then end of val) AS col_d,
MAX (update_time) AS update_time
OF test1
WHERE TYPE in ('a',
« b »,
« c »,
a ')
GROUP BY id;CREATE MATERIALIZED VIEW LOG ON test1_mv
WITH rowid
including the new values;
create table test2 (identification number,
col2 number,
COL3 varchar2 (10),
number of COL4,
constraint t2_pk primary key (id));
Insert into test2
Select 1, 1, 'bob', 1 double Union all
Select 2, 1, "sue", 1 double Union all
Select 3, 1, 'tom', 1 double Union all
Select 4, 1, 'jay', 1 double Union all
Select 5, 1, 'art', 1 double Union all
Select 6, 1, 'kay', 1 double Union all
Select 7, 1, 'max', 1 double Union all
Select 8, 1, 'tim', 1 double Union all
Select 9, 1, "liz", 1 from dual;commit;
CREATE MATERIALIZED VIEW LOG ON test2
WITH rowid, primary key
including the new values;
Test1_test2_mv CREATE MATERIALIZED VIEW
IMMEDIATE CONSTRUCTION
COOL OFF QUICKLY ON COMMIT
LIKE SOME t2.rowid,.
T1.ID,
T1.col_a,
T1.col_b,
T1.col_c,
T1.col_d,
T1.update_time,
T2.col2,
T2. COL3
OF test1_mv t1,.
Test2 t2
WHERE (+) t1.id = t2.id; -symbol of outer join is not correctly displayed on the forums without space, grr!ORA-12052: is unable to fast refresh materialized view TEST1_TEST2_MV
Y at - it any way I can get the materialized view fast refresh on commit or I asking the impossible?
Add t1.rowid:
SQL > CREATE MATERIALIZED VIEW test1_test2_mv
2 BUILD IMMEDIATE
3 QUICK REFRESH YOU COMMIT
4 AS t2.rowid SELECT rid2,
5 t1.rowid rid1,
6 t1.id
T1.col_a 7,.
T1.col_b 8,.
T1.col_c 9,.
T1.col_d 10,
T1.update_time 11,
T2.col2 12,
13 t2.col3
14 OF test1_mv t1,
15 test2 T2
16 WHERE t1.id = t2.id
17.
Materialized view created.
SQL > select * from test1_test2_mv
2.
RID2 RID1 ID COL_A, COL_B, COL_C COL_D UPDATE_TIME COL2 COL3
------------------ ------------------ ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ----------
AAAYB6AANAAAANDAAA AAAYB/AANAAAAN/AAA 1 1001 1003 1006 1004 25 / 06 / 2014 12:54:16 1 bob
AAAYB6AANAAAANDAAB AAAYB/AANAAAAN/AAB 2 1002 1005 25 / 06 / 2014 1 sue 14:54:16
AAAYB6AANAAAANDAAC AAAYB/AANAAAAN/AAC 3 1001 1006 25 / 06 / 2014 16:54:16 1 tom
AAAYB/AANAAAAN/AAD AAAYB6AANAAAANDAAD 4 1004 25/06/2014 14:54:16 1 jay
AAAYB6AANAAAANDAAE AAAYB / AANAAAAN / AAE 5 1002 2014/06/25 13:54:16 1 art
AAAYB6AANAAAANDAAF AAAYB/AANAAAAN/AAG 7 1007 1009 25 / 06 / 2014 10:54:16 max 1
AAAYB/AANAAAAN/AAH 1 tim
AAAYB/AANAAAAN/AAF 1 kay
AAAYB/AANAAAAN/AAI 1 liz
9 selected lines.
SQL > update of test2
2 set col3 = "fly."
3 where id = 7
6 m
1 line update.
SQL > validation
2.
Validation complete.
SQL > select * from test1_test2_mv
2.
RID2 RID1 ID COL_A, COL_B, COL_C COL_D UPDATE_TIME COL2 COL3
------------------ ------------------ ---------- ---------- ---------- ---------- ---------- ------------------- ---------- ----------
AAAYB6AANAAAANDAAA AAAYB/AANAAAAN/AAA 1 1001 1003 1006 1004 25 / 06 / 2014 12:54:16 1 bob
AAAYB6AANAAAANDAAB AAAYB/AANAAAAN/AAB 2 1002 1005 25 / 06 / 2014 1 sue 14:54:16
AAAYB6AANAAAANDAAC AAAYB/AANAAAAN/AAC 3 1001 1006 25 / 06 / 2014 16:54:16 1 tom
AAAYB/AANAAAAN/AAD AAAYB6AANAAAANDAAD 4 1004 25/06/2014 14:54:16 1 jay
AAAYB6AANAAAANDAAE AAAYB / AANAAAAN / AAE 5 1002 2014/06/25 13:54:16 1 art
AAAYB/AANAAAAN/AAH 1 tim
AAAYB/AANAAAAN/AAF 1 kay
AAAYB/AANAAAAN/AAI 1 liz
AAAYB6AANAAAANDAAF AAAYB/AANAAAAN/AAG 7 1007 1009 25 / 06 / 2014 10:54:16 1 rob
9 selected lines.
-
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#i1007007http://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 -
How to fast refresh materialized view parallel
We have Oracle 11.2.0.1 on Redhat 5.2. We use a dozen views fast refresh materialized in our application.
Occasionally refresh MV takes longer than the refresh interval.
One of the ways to improve the performance of refresh MV is to update at the same time, for examplehttp://www.dba-oracle.com/t_materialized_views_refreshing_performance.htm - Use parallel DML - Oracle author Michael Armstrong Smith notes "I've done parallel materialized view refreshing on tables recently and improved the load times considerably. Rather than having one load which took 2 hours, I run 4 parallel loads, one for each partition. The length of time for the whole process is now determined by how long the biggest partition takes to load. In my case, this is 40 minutes, with two 30 minute loads and one 20 minute load. Overall I am saving 1 hour 20 minutes. I can now add further partitions and do the same thing. My only limitation is the parallel loads because I don't have unlimited processing power. {code} My master tables are not partitioned, but think parallel will still better than non-parallel. Now the question, how to make refresh parallel. According to the paragraph cited above, Use parallel DML appears doing the job. Can someone confirm that. We use {code} alter materialied view MV_OFFENSE parallel REFRESH FAST start with sysdate next sysdate+ 1/24; {code}to schedule refresh. Does the parallel clause here parallels query the MV or refresh the MV? Any other way to make MV refresh parallel? Thanks
Hello
Just search for * 577870.1*. But before you search, select ID of item in the source list.
Hope this helps.
Best regards
Jean Valentine -
Fast refresh materialized view problems
I have two databases (A and B).
In A database, user NICK has a table called COLOUR_MASTER.
Also in this database, NICK issues creating materialized command newspaper view colour_master with the primary key, including the new values (and Yes, there is a primary key defined for this table)
In database B, there is a link of database called A_LINK, connect, Nick, identified by password using 'dbA ';
In database B, user IAN also creates a materialized view CM_MV cool off quickly in select * from colour_master@A_LINK
This statement is done correctly, and there are several million lines in CM_MV when it's done.
Immediately, IAN issued this command:
Start
dbms_mview. Refresh ('CM_MV');
end;
.. .and after a small pause, it gets the error
ORA-12008: error path refresh materialized view
ORA-02068: following sever error of A_LINK
ORA-03113: end of file on communication channel
One more + "select count (*) of colour_master@A_LINK" + subject immediately manages to return the correct number of records in the database so A 3113 is a bit misleading, I think that, in this case have crash, the database remains accessible at all times, there is no network problem (database A and B are both located in the same server so it of not like I'm trying of) connect to halfway around the globe).
The only thing I can think is that there is a permissions issue causes this error. The creation of MV because is made via a link, it is not a problem of IAN see all appropriate, but once the updates come into play, it is perhaps.
Any who can shed light on why I can't do the fast refresh from the view, I can create joyfully, please?I'm surprised no one asked you to do what is obvious: try to do a select * from colour_master@A_LINK, without that being wrapped in a create materialized MATERIALIZED view. Just do a simple select * from...
My bet is that you will get an error ORA_22992 can not use selected from the remote tables LOB Locators . And if you can't do a simple select * in a remote table, I suspect that you can reasonably expect Fireworks when you try to create or refresh a view materialized on such a thing!
Here's a quick test:
In the 1 database:
=========SQL> create table A (col1 varchar2(2), col2 clob); Table created. SQL> alter table A add constraint A1 primary key (col1); Table altered. SQL> insert into A values ('AA','This is an entry into a clob column'); 1 row created. SQL> commit; Commit complete. SQL> create materialized view log on A with primary key including new values; Materialized view log created.
In the database 2
=========SQL> connect ims_global/v0yager1@ussd Connected. SQL> create materialized view B refresh fast as 2 select * from A@remotedb_link; Materialized view created. SQL> exec dbms_mview.refresh('B'); BEGIN dbms_mview.refresh('B'); END; * ERROR at line 1: ORA-12008: error in materialized view refresh path ORA-02068: following severe error from REMOTEDB_LINK ORA-03113: end-of-file on communication channel 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 SQL> drop materialized view B; Materialized view dropped. SQL> create materialized view B refresh fast as 2 select col1 from A@ims_link; Materialized view created. SQL> exec dbms_mview.refresh('B'); PL/SQL procedure successfully completed.
Which seems to reproduce your problem rather well, I think.
I don't know if there is no work around for this. I mean, obviously you can't miss the CLOB column in your statement of 'create a MV' as I just did, but I don't know if you're still allowed or expected to be able to create a MV on lob columns and that such and such correction will allow you to do. Maybe someone else can provide this information.
But at least you won't have to play Russian roulette with your init.ora parameters!
-
Since the update to Firefox 41.0.2 I couldn't use Twitter.com. When I try to tweet, favorite, or retweet the following error occurs. Your account may be able to perform this action. Please, refresh the page and try again. There are a couple of other users who have the same problem, but it was tinkered with Mozilla and the other pending.
It started with the update to 41.0.2 and twitter works in all other browsers, but not Mozilla.
Here's this other thread with the DIY: Impossible of Retweet, tweet or articles favorite on Twitter, even when I refresh the page.
I think there must be a setting or a question Add on. Your extensions look pretty standard, so I'm leaning towards a parameter of the problem. You could test as follows:
By default, Windows hides the .js extension. To make sure that the following steps work, you have to disable this feature, at least temporarily. This article has the steps: http://windows.microsoft.com/en-us/windows/show-hide-file-name-extensions
Open the settings folder (AKA Firefox profile) current Firefox help
- button "3-bar" menu > "?" button > troubleshooting information
- (menu bar) Help > troubleshooting information
- type or paste everything: in the address bar and press Enter
In the first table of the page, click on the view file"" button. This should launch a new window that lists the various files and folders in Windows Explorer.
Leave this window open, switch back to Firefox and output, either:
- "3-bar" menu button > button "power".
- (menu bar) File > Exit
Pause while Firefox finishing its cleanup, then rename prefs.js to something like prefs.old.
Launch Firefox back up again and it must use the default settings (for example, integrated home page). If you need to restore your previous session windows and tabs, go ahead and select restore previous Session from the history menu.
Twitter works best? If so, we could try to understand the precise adjustment at fault or you could rebuild your settings. Or you can undo the change by renaming the new prefs.js to prefs.txt and rename prefs.old back to prefs.js (with Firefox closed, as you did before) and understand it through a little trial and error.
Maybe you are looking for
-
Has continued to drain the battery...
I should have read these messages before buying my iPad Pro (large). I disabled the Bluetooth, brightness, stop all notifications and still can't believe how quickly the battery runs out. Someone at - it any other suggestions? I saw that Apple is
-
Media Player - try to burn a CD and the drive doesn't show as connected
I bought a new DVD/CD-RW unit, it plays the CD but when I go to Media player and try to burn a CD, the burner does not show as connected? It's weird.
-
HP Desktop: Using Windows 7 drivers
Please can someone help me. I'm looking for hours for these drivers. PCI encryption/decryption controllerPCI\VEN_8086 & DEV_0F18 & SUBSYS_2B28103C & REV_0EPCI\VEN_8086 & DEV_0F18 & SUBSYS_2B28103CPCI\VEN_8086 & DEV_0F18 & CC_108000PCI\VEN_8086 & DEV_
-
State of the hard drive, the 'Frozen' value in the bios, no registered password?
My ACER Aspire 5733 shows the HARD drive as 'Frozen' in the bios and, of course, does not start to her. There is no administrator password or user saved, but it shows the HARD drive as "Frozen" in the security of the bios screen. If I take the drive
-
Want 5530: double-sided printing 5530 hp envy
After uninstalling and reinstalling the 5530 want to my laptop to fix a connectivity problem, I can't find the option to print double-sided. I tried to update the software of the printer, but do not always have option for double-sided printing. How c