-1

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

谢谢

4

1 回答 1

0

一些东西:

无论如何,您确实应该使用 dbms_scheduler 而不是 dbms_job,因为 dbms_job 自 10g 起已被弃用(前提是您至少使用 10g ...如果没有,您可能需要考虑升级)。

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

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

在您习惯之前,间隔的语法可能有点棘手……我将从Oracle 文档开始。

检查 mview 上次刷新的时间:

select owner, mview_name, last_refresh_date  from dba_mviews;

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

于 2016-02-19T18:17:34.357 回答