簡體   English   中英

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

[英]How to know if MATERIALIZED VIEW update is running?

我在談論甲骨文。 我有一些物化視圖,它們會不時更新(它是通過計划任務完成的)。 很容易知道上次刷新日期 - 只需查詢USER_MVIEW_REFRESH_TIMES即可。 有沒有辦法知道當前是否有一些觀點正在更新?

你可以嘗試:

SELECT CURRMVOWNER, CURRMVNAME FROM V$MVREFRESH

立即刷新視圖列表。

您可以通過查看進程是否具有獲取鎖定來間接查看是否正在刷新實例化視圖:只有在刷新時才應修改實例化視圖(除了用於雙向復制的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)

定義為按照計划刷新的物化視圖,其中“...... START WITH ... NEXT ...”作為其DDL的一部分將在DBMS_JOB控制下執行。 如果正在刷新這些MV,您將在USER_JOBS(或DBA_JOBS)視圖中看到相應作業和/或DBA_JOBS_RUNNING中的行的THIS_DATE和THIS_SEC值。

如果您已根據需要定義了MV並且正在外部啟動刷新,那么Vincent的答案是確定狀態的一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM