2016-09-21 69 views
0

我正在使用Oracle 11g2,遇到以下情況,任何人都可以向我解釋其背後的原因。我找不到適當的文件。

問題: 我不能創造快速刷新物化視圖使用下面的查詢包含ANSI編碼標準,但如果我用傳統的編碼標準,那麼我就可以創建它。 讓我知道是否需要任何進一步的信息。使用ANSI編碼標準創建物化視圖

**EMP Table:** 
    EMP_ID NUMBER 
    EMP_NAME VARCHAR2(100) 
    DEPT_ID NUMBER 

    **DEPT Table:** 
    DEPT_ID NUMBER 
    DEPT_NAME VARCHAR2(100) 


    --Mat View Logs creation 
    CREATE MATERIALIZED VIEW LOG ON EMP WITH ROWID ; 
    CREATE MATERIALIZED VIEW LOG ON DEPT WITH ROWID; 

    CREATE MATERIALIZED VIEW EMP_DEPT_MV 
    REFRESH FAST 
    AS 
    SELECT EMP_ID,EMP_NAME,EMP.DEPT_ID,DEPT_NAME,EMP.ROWID E_R,DEPT.ROWID D_R 
    FROM EMP 
    INNER 
    JOIN DEPT 
    ON  EMP.DEPT_ID=DEPT.DEPT_ID; 

**SQL Error: ORA-12015: cannot create a fast refresh materialized view from a complex query 
12015. 00000 - "cannot create a fast refresh materialized view from a complex query"** 


CREATE MATERIALIZED VIEW EMP_DEPT_MV 
REFRESH FAST 
AS 
SELECT EMP_ID,EMP_NAME,EMP.DEPT_ID,DEPT_NAME,EMP.ROWID E_R,DEPT.ROWID D_R 
FROM EMP,DEPT 
WHERE EMP.DEPT_ID=DEPT.DEPT_ID; 

**Materialized view EMP_DEPT_MV created.** 

回答

1

不得使用ANSI連接語法,使用舊的Oracle連接語法。這是Oracle中的一個錯誤。

而且FOM的Oracle文檔http://docs.oracle.com/cd/B19306_01/server.102/b14223/basicmv.htm

定義查詢物化視圖與只聯接和無聚集對快速刷新以下限制:

  • 從「上快速一般限制所有限制刷新」。 General restriction

  • 它們不能有GROUP BY子句或聚合。

  • FROM列表中所有表的RowID必須出現在查詢的SELECT
    列表中。

  • 物化視圖日誌必須與查詢的FROM列表中的所有基表 的rowid一起存在。

+0

謝謝您的澄清和鏈接。任何有關與此有關的Oracle錯誤ID /數字的想法。 – hemalp108

+2

檢查文檔ID 1087507.1 https://blogs.oracle.com/db/entry/master_note_for_mview_ora-_error_diagnosis_for_materialized_view_create_or_refresh – XING