Oracle
物化視圖未清除(通過視圖通過 dblink)
我在主系統 (Oracle 18c) 和外部系統 (Oracle 19c) 之間創建了一個物化視圖:
create materialized view primary_system.workorder_mv build immediate refresh force on demand start with sysdate next sysdate + (30/(60*60*24)) as select cast(workorderid as number(38,0)) as objectid, wonum, status, --other fields longitudex, latitudey from external_system.workorder_vw@gistomax --view in external system that is served up by dblink (gistomax) --the view looks like this: select * from workorder where isgis=1 create materialized view log on external_system.workorder with rowid;
文件說物化視圖應該自動清除:
Oracle 在物化視圖刷新期間自動跟踪物化視圖日誌中的哪些行已被使用,並從日誌中清除這些 行,以使日誌不會無休止地增長。因為多個簡單的物化視圖可以使用相同的物化視圖日誌,所以可能仍然需要已經用於刷新一個物化視圖的行來刷新另一個物化視圖。在所有物化視圖都使用它們之前,Oracle 不會從日誌中刪除行。
- 我沒有任何其他引用 MV 日誌的物化視圖。
- 這是 MV 日誌屬性 (Toad)。
- 這是
all_registered_mviews
看起來的樣子。- MV已同步成功。如果我在外部系統的 WORKORDER 表中創建或更新記錄,記錄會按 30 秒的計劃同步到主系統。
問題:
到目前為止,MV 日誌數據似乎沒有自動清除:
記錄同步後,為什麼不自動清除 MV 日誌?
嘗試將您的 MV 直接基於源表而不是中間視圖。在 MV 查詢中包含您的“isgis=1”條件。
create materialized view primary_system.workorder_mv build immediate refresh force on demand start with sysdate next sysdate + (30/(60*60*24)) as select cast(workorderid as number(38,0)) as objectid, wonum, status, --other fields longitudex, latitudey from external_system.workorder@gistomax where isgis=1