oracle 需要编译或刷新实体化视图

pw9qyyiw  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(193)

我有下面的脚本来创建涉及两个表的物化视图。
我看到数据是自动反映时,有一个新的数据插入源表后24小时,因为我提到了刷新在我的脚本。
我是否仍需要手动刷新实体化视图或此脚本足以处理自动刷新。我很困惑,请指教。

CREATE MATERIALIZED VIEW MVW_ITEM (Item_id ,Item_cost )
BUILD IMMEDIATE
USING INDEX
REFRESH COMPLETE START WITH SYSDATE+0 next SYSDATE + 1
USING DEFAULT LOCAL ROLLBACK SEGMENT
USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE

select Item_id , Item_cost from item_dict , item_dtls

where item_dict.item_id = item_dtls.item_id;
b5buobof

b5buobof1#

在MV定义中使用start with ... next ...会自动创建一个作业来刷新它。
所以,是的,数据库将每天使用START WITH SYSDATE+0 next SYSDATE + 1自动刷新MV(尽管不需要在开始处添加零)。您无需采取进一步行动。
您可以通过查询*_scheduler_jobs(旧版本为*_jobs)查看此作业。

create table t (
  c1 int
);

create materialized view mv 
refresh start with sysdate next sysdate + 1
as 
  select count(*) from t;
  
select job_name, job_action, start_date, next_run_date 
from   user_scheduler_jobs;

JOB_NAME           JOB_ACTION                               START_DATE                                      NEXT_RUN_DATE                         
MV_RF$J_0_S_172    dbms_refresh.refresh('"CHRIS"."MV"');    20-JUN-2023 09.57.13.000000000 EUROPE/LONDON    21-JUN-2023 09.57.13.000000000 GMT

相关问题