Alert 是一種Oracle系統中的一種機制,它可以監視系統數據庫,在規定的情況下給規定用戶(hù)一個(gè)通知,通知可以是郵件或者其他形式,在標注的系統和客戶(hù)化系統中都是可以定義使用的。有兩種類(lèi)型的Alert:
(1) Event Alert. 事件型的Alert會(huì )即時(shí)發(fā)出消息
(2) Periodic Alert. 周期型根據預定義周期檢查數據庫然后發(fā)出消息
Oracle Alert會(huì )在以上兩種給定請款下檢查(check)數據庫,檢查時(shí)發(fā)生的與預定義不符合的情況叫做一個(gè)異常 (Exception),檢查之后發(fā)生的預定義動(dòng)作叫做反應(Action)。
Action在Oracle中有4種:
(1) 發(fā)送E-mail 消息(UNIX Sendmail, VMS mail, Any MAPI-complaint NT mail application…)
(2) 提交一個(gè)并發(fā)請求(Concurrent Program)
(3) 運行一個(gè)SQL腳本(只有客戶(hù)化表和開(kāi)放接口表才可以在這個(gè)情況下進(jìn)行寫(xiě)操作)
(4) 運行一個(gè)系統腳本
標準Alert Guide中開(kāi)發(fā)Alert的7個(gè)基本步驟:(參考R11i Oracle Alert Student Guide)
(1) 調查研究
(2) 定義Alert
(3) 定義反應(Action)
(4) 定義反應集(Action Set)
(5) 測試Alert
(6) 查看歷史記錄
(7) 編寫(xiě)文檔
1. Event Alert
事件型Alert可以監視數據庫,即時(shí)做出反應。對數據庫的增加(insert)和修改(update)操作可以進(jìn)行監控,一個(gè)查詢(xún)語(yǔ)句(select SQL statement) 定義在Event Alert中和定義的反應(Action)作為數據庫事件的結果。
觸發(fā)條件:當對Oracle 應用或客戶(hù)化應用數據庫表有update/insert操作時(shí)
(1) 調查、準備
對于標準的Oracle EBS功能,可以再form中查看Record History得到相應的表,然后在應用開(kāi)發(fā)的職責下可以看到對應表的列。
準備階段還需要安裝客戶(hù)化應用、創(chuàng )建客戶(hù)化應用和設置Mail List。
對于客戶(hù)化表,需要注冊表和列到Oracle系統中( AD_DD.REGISTER_TABLE 和AD_DD.REGISTER_COLUMN )。
(2) 定義Alert
用戶(hù):sysadmin
職責:Alert Manager
菜單:Alert>>Define

關(guān)鍵的屬性設置
Application: 選擇Alert的應用,取決于要對那個(gè)應用使用Alert
Name: Alert的標識,唯一
Periodic/Event: 選擇Alert的類(lèi)型,只能二選一,這里選Event
Event Detail>>Application: 注冊表的應用
Event Detail>>Table: 注冊的表
Event Detail>>After Insert: 是否對insert 進(jìn)行監控
Event Detail>>After Update: 是否對update 進(jìn)行監控
Select Statement: 返回結果的select 語(yǔ)句
Verify: 驗證Select語(yǔ)句
Alert Detail: Alert的細節設置

其中Oracle ID 固定選擇APPS, OU就是需要控制的OU,一般情況要選擇某一個(gè)組織,input和output就是Select語(yǔ)句中的參數,input參數以“:”開(kāi)頭(常用的有 :ROWID, :MAILID, :ORG_ID, :DATE_LAST_CHECKED),output參數以“&”開(kāi)頭,會(huì )自動(dòng)解析到類(lèi)表里。
(3) 定義Action

Action Level為Detail的意思是,如果前面的SQL返回n條記錄,那么將發(fā)n封mail。這里的Text引用了output 變量。
(4) Action Set: 設置反應集

Action Set就是把一系列的Action放在一個(gè)集合里
(5) 測試
測試之前可以查看一下對應生成的觸發(fā)器,方法:
SELECT t.owner, t.trigger_name, t.trigger_type, t.triggering_event
FROM all_triggers t
WHERE t.table_owner = 應用簡(jiǎn)稱(chēng)
AND t.table_name = 表名

觸發(fā)器的類(lèi)型也可以在這里看到。
對于客戶(hù)化表,如果沒(méi)有界面,那么可以模擬登陸來(lái)測試:


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;
然后對表進(jìn)行update/insert操作就會(huì )根據觸發(fā)器來(lái)判斷是否有Alert的Action
(6) 查看歷史記錄
菜單:History

根據相應的條件就可以查出相應的Alert的Action。
也可以查詢(xún)wf_notification_out,如果state從0變?yōu)?說(shuō)明郵件發(fā)送了:
SELECT * FROM wf_notification_out WHERE corrid = 'APPS:ALR:';
如果配置有郵件服務(wù),那么maillist也會(huì )受到郵件。
2. Periodic Alert
周期型的定義和事件型定義基本一致,系統check方式不一樣。

Frequency: check的周期
Start Time: 開(kāi)始時(shí)間
End Time:結束時(shí)間
其他與Event型基本一致
聯(lián)系客服