Alert 是一種Oracle系統中的一種機制,它可以監視系統資料庫,在規定的情況下給規定使用者一個通知,通知可以是郵件或者其他形式,在標註的系統和客戶化系統中都是可以定義使用的。有兩種類型的Alert:
(1) Event Alert. 事件型的Alert會即時發出訊息
(2) Periodic Alert. 周期型根據預定義周期檢查資料庫然後發出訊息
Oracle Alert會在以上兩種給定請款下檢查(check)資料庫,檢查時發生的與預定義不符合的情況叫做一個異常 (Exception),檢查之後發生的預定義動作叫做反應(Action)。
Action在Oracle中有4種:
(1) 發送E-mail 訊息(UNIX Sendmail, VMS mail, Any MAPI-complaint NT mail application…)
(2) 提交一個並發請求(Concurrent Program)
(3) 運行一個SQL指令碼(只有客戶化表和開放介面表才可以在這個情況下進行寫操作)
(4) 運行一個系統指令碼
標準Alert Guide中開發Alert的7個基本步驟:(參考R11i Oracle Alert Student Guide)
(1) 調查研究
(2) 定義Alert
(3) 定義反應(Action)
(4) 定義反應集(Action Set)
(5) 測試Alert
(6) 查看記錄
(7) 編寫文檔
1. Event Alert
事件型Alert可以監視資料庫,即時做出反應。對資料庫的增加(insert)和修改(update)操作可以進行監控,一個查詢語句(select SQL statement) 定義在Event Alert中和定義的反應(Action)作為資料庫事件的結果。
觸發條件:當對Oracle 應用或客戶化應用程式資料庫表有update/insert操作時
(1) 調查、準備
對於標準的Oracle EBS功能,可以再form中查看Record History得到相應的表,然後在應用開發的職責下可以看到對應表的列。
準備階段還需要安裝客戶化應用、建立客戶化應用和設定Mail List。
對於客戶化表,需要註冊表和列到Oracle系統中( AD_DD.REGISTER_TABLE 和AD_DD.REGISTER_COLUMN )。
(2) 定義Alert
使用者:sysadmin
職責:Alert Manager
菜單:Alert>>Define
關鍵的屬性設定
Application: 選擇Alert的應用,取決於要對那個應用使用Alert
Name: Alert的標識,唯一
Periodic/Event: 選擇Alert的類型,只能二選一,這裡選Event
Event Detail>>Application: 註冊表的應用
Event Detail>>Table: 註冊的表
Event Detail>>After Insert: 是否對insert 進行監控
Event Detail>>After Update: 是否對update 進行監控
Select Statement: 返回結果的select 語句
Verify: 驗證Select語句
Alert Detail: Alert的細節設定
其中Oracle ID 固定選擇APPS, OU就是需要控制的OU,一般情況要選擇某一個組織,input和output就是Select語句中的參數,input參數以“:”開頭(常用的有 :ROWID, :MAILID, :ORG_ID, :DATE_LAST_CHECKED),output參數以“&”開頭,會自動解析到類表裡。
(3) 定義Action
Action Level為Detail的意思是,如果前面的SQL返回n條記錄,那麼將發n封mail。這裡的Text引用了output 變數。
(4) Action Set: 設定反應集
Action Set就是把一系列的Action放在一個集合裡
(5) 測試
測試之前可以查看一下對應產生的觸發器,方法:
SELECT t.owner, t.trigger_name, t.trigger_type, t.triggering_event
FROM all_triggers t
WHERE t.table_owner = 應用簡稱
AND t.table_name = 表名
觸發器的類型也可以在這裡看到。
對於客戶化表,如果沒有介面,那麼可以類比登陸來測試:
View
Code
BEGIN --Initialize apps.fnd_global.apps_initialize( user_id => X, resp_id => X, resp_appl_id => X); mo_global.set_policy_context( p_access_mode => 'S', p_org_id => org_id); COMMIT;END;
然後對錶進行update/insert操作就會根據觸發器來判斷是否有Alert的Action
(6) 查看記錄
菜單:History
根據相應的條件就可以查出相應的Alert的Action。
也可以查詢wf_notification_out,如果state從0變為2說明郵件發送了:
SELECT * FROM wf_notification_out WHERE corrid = 'APPS:ALR:';
如果配置有郵件服務,那麼maillist也會受到郵件。
2. Periodic Alert
周期型的定義和事件型定義基本一致,系統check方式不一樣。
Frequency: check的周期
Start Time: 開始時間
End Time:結束時間
其他與Event型基本一致