我剛剛創建的表DEPT和EMP類似如下的觀點:上提交的快速刷新物化
create table DEPT
(dept_no number , dept_name varchar(32) , dept_desc varchar(32),
CONSTRAINT dept_pk Primary Key (dept_no));
create table EMP
(emp_no number, dept_no number, CONSTRAINT emp_pk Primary Key (emp_no,dept_no));
insert into dept values (10,'it','desc1');
insert into dept values (20,'hr','desc2');
insert into emp values (1,10);
insert into emp values (2,20);
我創建物化在這些表的rowid查看日誌和物化視圖如下:
create materialized view log on emp with rowid;
create materialized view log on dept with rowid;
create materialized view empdept_mv refresh fast on commit as
select a.rowid dept_rowid, b.rowid emp_rowid, a.dept_no,b.emp_no
from dept a, emp b
where a.dept_no=b.dept_no ;
select * from emp;
EMP_NO DEPT_NO
---------- ----------
1 10
2 20
3 30
select * from dept;
DEPT_NO DEPT_NAME DEPT_DESC
---------- -------------------------------- --------------------------------
10 it desc1
20 hr desc2
30 it desc3
select * from empdept_mv;
DEPT_ROWID EMP_ROWID DEPT_NO EMP_NO
------------------ ------------------ ---------- ----------
AAAli5AABAAAPZ6AAA AAAli7AABAAAQs6AAA 10 1
AAAli5AABAAAPZ6AAB AAAli7AABAAAQs6AAB 20 2
我插入了一條新記錄並執行了COMMIT; ..但仍然當我檢查物化視圖時,新記錄未顯示在物化視圖中。
insert into dept values (30,'it','desc3');
commit;
insert into emp values (3,30);
commit;
select * from empdept_mv;
DEPT_ROWID EMP_ROWID DEPT_NO EMP_NO
------------------ ------------------ ---------- ----------
AAAli5AABAAAPZ6AAA AAAli7AABAAAQs6AAA 10 1
AAAli5AABAAAPZ6AAB AAAli7AABAAAQs6AAB 20 2
現在,當我運行快速,徹底刷新程序爲per,快速刷新不更新MView的,但完全刷新呢。 (注:但MVIEW仍然刷新COMMIT)
execute DBMS_MVIEW.REFRESH('empdept_mv', 'F', '', TRUE, FALSE, 0,0,0,FALSE, FALSE);
PL/SQL procedure successfully completed.
DEPT_ROWID EMP_ROWID DEPT_NO EMP_NO
------------------ ------------------ ---------- ----------
AAAli5AABAAAPZ6AAA AAAli7AABAAAQs6AAA 10 1
AAAli5AABAAAPZ6AAB AAAli7AABAAAQs6AAB 20 2
execute DBMS_MVIEW.REFRESH('test_mview2', 'C', '', TRUE, FALSE, 0,0,0,FALSE, FALSE);
PL/SQL procedure successfully completed.
DEPT_ROWID EMP_ROWID DEPT_NO EMP_NO
------------------ ------------------ ---------- ----------
AAAli5AABAAAPZ6AAA AAAli7AABAAAQs6AAA 10 1
AAAli5AABAAAPZ6AAB AAAli7AABAAAQs6AAB 20 2
AAAli5AABAAAPZ6AAC AAAli7AABAAAQs6AAC 30 3
的DBMS_MVIEW.EXPLAIN_MVIEW輸出是如下所示:(capability_name --Possible-- msgtxt)
- PCT --N- -
- REFRESH_COMPLETE --Y--
- REFRESH_FAST --Y--
- REWRITE --N--
- PCT_TABLE --N-- Oracle錯誤:看到RELATED_NUM和RELATED_TEXT爲 細節
- REFRESH_FAST_AFTER_INSERT --Y--
- REFRESH_FAST_AFTER_ONETAB_DML --Y--
- REFRESH_FAST_AFTER_ANY_DML --Y--
- REFRESH_FAST_PCT - N-- PCT是不可能在配接任何細節的 表
- REWRITE_FULL_TEXT_MATCH --N-- Oracle錯誤:看到RELATED_NUM和 RELATED_TEXT的細節
- REWRITE_FULL_TEXT_MATCH --N--查詢重寫爲d isabled上 物化視圖
- REWRITE_PARTIAL_TEXT_MATCH --N--物化視圖不能支持任何 類型的查詢重寫
- REWRITE_PARTIAL_TEXT_MATCH --N--查詢重寫被禁用在 物化視圖
- REWRITE_GENERAL --N - 化視圖不能支持任何類型的 查詢重寫
- REWRITE_GENERAL --N--查詢重寫是在物化視圖
- REWRITE_PCT --N--一般重寫是不可能的或PCT禁用是不是 可能在一個
- PCT_TABLE_REWRITE --N-- Oracle錯誤:看到RELATED_NUM和 RELATED_TEXT的細節
我如何才能實現快速刷新ON COMMIT?
Oracle版本詳細信息如下:
NLSRTL 10.2.0.4。0生產
Oracle數據庫10g 10.2.0.4.0 64位生產
PL/SQL 10.2.0.4.0生產
TNS針對Linux:10.2.0.4.0生產
它適合我。你可能想添加你的'創建物化視圖日誌...'和你的插入,所以我們可以完全重現這個問題。 –
您沒有顯示任何數據,也沒有說明您將該行插入哪個表。當你運行定義MV查詢的select語句時,你看到新行嗎? –
我已經包含了所有的插入語句。是的,我可以在表中插入後看到新的一行。 –