Oracle中如何查询所有物化视图的刷新频率
Oracle 11g 查询物化视图刷新频率方法
ALL_MVIEWS视图仅存储物化视图基础属性、上次刷新时间等信息,你需要的定时刷新间隔表达式(类似SYSDATE + 1/24)需要从调度任务或刷新组视图中查询,以下是两种可行方案:
方案1:直接查询独立定时刷新的物化视图间隔
适用于单独配置刷新任务的物化视图:
SELECT am.owner 物化视图所属用户, am.mview_name 物化视图名称, aj.interval 刷新频率表达式, aj.next_date 下次预计刷新时间 FROM all_mviews am LEFT JOIN all_jobs aj ON aj.what LIKE '%DBMS_MVIEW.REFRESH%''' || am.mview_name || '''%' AND aj.schema_user = am.owner WHERE am.refresh_mode = 'DEMAND' ORDER BY am.owner, am.mview_name;
返回结果中刷新频率表达式列就是你要的原始配置参数,若该列为空,说明对应物化视图未配置自动定时刷新,仅支持手动触发。
方案2:查询刷新组统一调度的物化视图间隔
如果你的物化视图加入了刷新组统一管理刷新计划,使用以下语句查询:
SELECT ar.owner 刷新组所属用户, ar.name 刷新组名称, arm.mview_name 组内物化视图名称, ar.interval 组统一刷新频率, ar.next_date 组下次刷新时间 FROM all_refresh ar JOIN all_refresh_children arm ON ar.rowner = arm.owner AND ar.rname = arm.refresh_group ORDER BY ar.owner, ar.name, arm.mview_name;
补充说明
- 无DBA权限的账号仅能查询自身有权限访问的物化视图,要查询全库所有物化视图,可将语句中视图前缀
ALL_替换为DBA_(需对应账号有DBA权限) - 若物化视图使用
DBMS_SCHEDULER配置刷新任务,需额外查询ALL_SCHEDULER_JOBS视图获取间隔参数
内容的提问来源于stack exchange,提问作者Oscar Jnn
相关产品推荐
相关产品推荐

