目前分類:Oracle Alert (2)

瀏覽方式: 標題列表 簡短摘要

去年因為 Alert 的問題, 上 Google 找到了 昭佑.天翔 的 Blog, 這位高手有客製了一個名為 "Graphic Alert", 當下真是驚為天人, 在天翔好心的指點之下, 我知道 UTL_SMTP 的存在

最近因為有些 Alert 因為資料量太大的問題 (超過 Alert 限制的 64K) (註一), 造成 Alert 無法正常寄送, 所以才認真的研究 UTL_SMTP 的實作. 剛好, 在 Oracle Metalink 上有一篇文章, 就是教我們怎麼使用 UTL_SMTP (Metalink DocID : 357385.1), 也附上完整範例檔, 基本上, 如果 DB Server 有開啟 SMTP 服務, 修正一下 Package 的設定, 應該就可以直接使用了. 不過, 可能會遇到的問題有 :


1. 中文字變亂碼
2. 內容太長, VARCHAR2 變數仍有長度問題
3. Attachment 的方式太過僵化

註一: Alert 64K 的限制在 Oracle Applications Technology 11i.ATG_PF.H.delta.7 (RUP 7) 將會更新, 不過, 上 RUP7 是一個不小的挑戰就是了

Aloz 發表在 痞客邦 PIXNET 留言(0) 人氣()

我們家的 User 很喜歡系統發 Mail 通知他們一些事情, 可能這樣會讓他們覺得系統很聰明吧 , 所以, 這段時間 Alert 就寫了一堆 XD

一樣, 也是寫一些簡單的心得 :

- Alert 只能發出純文字的內容, 不能夾檔, 也不能用 HTML 去寫, 所以 Alert 不能跟 Notifications 一樣漂亮

- Alert 的觸發可以分成 Schedule 與 Event, Schedule 就是自己訂時間, 系統就依照 SQL 把串出來的資料寄出. Event 就是利用 DB Trigger 的方式觸發, 不過預設的 DB Trigger 是針對整個 Table, 如果需要針對特定欄位做觸發, 就需要自己手動去 Trigger 加條件. Alert 產生的 DB Trigger 有 Naming Rule, 所以很好分 : ALR_<TABLE_NAME>_<字尾>, 字尾就看你是 After Insert = IAR, After Update = UAR 來決定

- Event 的 Alert SQL 都必須要加上 XXX.ROWID = :ROWID, 這樣才能夠正確判斷出是哪一筆資料觸發了 Event

- 如果要針對同一個 Table 發出兩封不同的 Alert, 好像是因為 Trigger 無法區分, 會造成兩封會有衝突 (有一封會一直有 Error), 在沒找到解法前, 我的做法是 :
    A. 對個別的情況先寫各別的 DB Trigger, 把相關資料寫到 Temp Table
    B. Alert 的 Event 再針對 Temp Table 做監看即可

- 發出的信也可以分成兩種 : Detail 與 Summary, Detail 就是 SQL 串出幾筆, Mail 就寄出幾筆, Summary 就是可以有表頭表身, 那表身像表格, 標題是可以重複的. 我個人比較喜歡把 Event 的 Alert 發成 Detail, 而 Schedule 的 Alert 發成 Summary

- Summary 的表身資料, 每一行的最前面都必須要空兩格, 我也不知道為什麼, 只知道不空的話前兩個字會被截斷

- 每一封 Alert 都要設定 Actions (Mail內容), Action Sets, Alert Details, Alert Details 是比較容易被忘記的, 因為裡面的 Installations 沒有指定 APPS 的 OU 的話, 是不會正常動作的

- 如果內容有純數字資料, 建議去 Alert Details 裡定義最長長度, 這樣格式比較好抓不會亂跑

Aloz 發表在 痞客邦 PIXNET 留言(3) 人氣()

找更多相關文章與討論

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼