Oracle

獲取有關無效視圖的通知

  • October 14, 2019

我每周有 40 個視圖集成/同步到工單管理系統。

這些視圖基於 GIS 表,這些表是出了名的混亂。隨著時間的推移,視圖最終可能會變得無效

例子:

  • 使用者刪除或重命名基礎表中的列,但未能通知 IT 更改,因此視圖不會相應更新。
  • 結果,視圖將變得無效:ORA-04063: view "ROADS_VW" has errorsORA-00904: "FIELD1": invalid identifier.

我想在每週將視圖同步到工作訂單管理系統之前擷取並修復無效視圖(或修復基礎數據)。

有沒有辦法讓 Oracle 通知我無效視圖?

例如,如果集成發生在星期五,那麼如果任何視圖無效,則在星期四收到一封電子郵件。

您可以使用以下過程獲取無效視圖:

DECLARE

   CURSOR InvaliViews AS
   SELECT OBJECT_NAME
   FROM USER_OBJECTS
   WHERE object_type = 'VIEW'
       AND status = 'INVALID';

BEGIN

   FOR aView IN InvaliViews LOOP
       UTL_MAIL.SEND(
           sender => 'noreply@your_domain.com',
           recipients => 'your-email@your_domain.com',
           subject => 'Notification about invalid views',
           message => 'View '||aView.OBJECT_NAME||' is not valid');
   end loop;

end;

您可以每週執行一次由調度程序作業觸發的此類程序

引用自:https://dba.stackexchange.com/questions/250961