如何知道MATERIALIZED VIEW更新是否正在运行?

and*_*rii 5 sql oracle

我在谈论甲骨文.我有一些物化视图,它们会不时更新(它是通过计划任务完成的).很容易知道上次刷新日期 - 只需查询USER_MVIEW_REFRESH_TIMES即可.有没有办法知道当前是否有一些观点正在更新?

dpb*_*ley 5

定义为按计划刷新的物化视图将“... START WITH... NEXT...”作为其 DDL 的一部分,将在 DBMS_JOB 控制下执行。如果正在刷新这些 MV,您将在相应作业的 USER_JOBS(或 DBA_JOBS)视图中看到 THIS_DATE 和 THIS_SEC 的值和/或 DBA_JOBS_RUNNING 中的一行。

如果您已将 MV 定义为按需刷新并在外部启动刷新,则 Vincent 的答案是确定状态的一种方法。


小智 5

你可以尝试:

SELECT CURRMVOWNER, CURRMVNAME FROM V$MVREFRESH

立即刷新视图列表.


Vin*_*rat 4

您可以通过查看进程是否已获取锁来间接查看物化视图是否正在刷新:物化视图仅应在刷新时进行修改(用于双向复制的 FOR UPDATE 物化视图除外)。

仅当刷新物化视图时,此查询才应返回行:

SELECT sid
  FROM v$lock
 WHERE type = 'TX'
   AND id1 = (SELECT object_id
                FROM all_objects
               WHERE owner = :owner
                 AND object_name = :object_name)
Run Code Online (Sandbox Code Playgroud)