Oracle Materialized View刷新错误或成功

时间:2016-02-19 16:36:05

标签: sql oracle materialized

我们有一个为远程数据库视图(db link)创建的Materialized视图。 mt视图每晚都会刷新(完成)。我们要求为客户提供刷新成功与否的每日电子邮件状态(出于任何原因)。目前,刷新是通过DBMS_JOB进行的。系统如何自动检查刷新状态并对其进行操作?如果我创建一个调用DBMS_MVIEW.REFRESH(我的mt视图,'C')的过程,如果刷新调用不成功(例如网络问题),它会失败吗?我能在EXCEPTION中捕获它并记录错误吗?另外,DBMS_ERRLOG.CREATE_ERROR_LOG在刷新MT视图时有用吗?

谢谢

1 个答案:

答案 0 :(得分:0)

一些事情:

你真的应该使用dbms_scheduler而不是dbms_job,因为dbms_job已经被弃用了10g(如果你至少有10g ......如果没有,你可能要考虑升级)。

虽然您可以使用dbms_scheduler来安排mview刷新,但mviews已经内置了该功能。以下命令将安排mview每天凌晨1点刷新(完成):

ALTER MATERIALIZED VIEW <mviewname>
 REFRESH COMPLETE
 NEXT (TRUNC (SYSDATE+1) + 1/24);

间隔的语法可能有点棘手,直到你习惯它...我会从Oracle docs开始。

检查mview上次刷新的时间:

select owner, mview_name, last_refresh_date  from dba_mviews;

因此,如果您每天早上刷新mview,则可以设置一个调度程序作业,以便在当天早上刷新或未刷新mview时发送电子邮件(基于上述查询的结果)。