ORALCE ERP Alert 設定 mail

一.        Oracle Alert  功能啓用
Alert指郵件警示系統,主要配置EBS發送警示郵件。
在11i中,未上Patch 4676589 11i.ATG_PF.H Rollup 4之前,簡單配置sendmail發送郵件;應用patch之後,使用workflow notification mailer服務發送郵件。用oracle的話講,之前的alert郵件發送技術過時、不支持MAPI,WF mailer應用最新技術處理進出郵件,而且整合WF 和Alert發送郵件功能,減少成本。
我們公司應用了Patch 4676589,此patch不可逆,所以只能配置workflow notification mailer 服務。

未上Patch 4676589的啓用Alert配置寫在8樓,注意哦,與上過patch的配置完全不一樣。

1.1.        配置MAPI郵箱
設置步驟
要發送郵件先要有個郵箱,126的也可以,sendmail 的也可以(需配置IMAP服務),我直接在exchange server上建立一個帳號。
       1.登陸exchange server (任意一臺exchange)
       1.jpg
2008-11-24 11:29 上傳
下載附件 (18.15 KB)


       2.打開路徑Active Direectory用戶和計算機
       2.JPG
2008-11-24 11:29 上傳
下載附件 (10.1 KB)


       3.新建一個帳戶test1,並建立郵箱[email protected]
       3.JPG
2008-11-24 11:29 上傳
下載附件 (35.54 KB)



       4.注意標籤‘帳戶’中,帳戶選項:‘密碼永不過期’,防止以後ERP在使用此帳號時因密碼需變更,而無法使用。
       4.JPG

 

1.2.        配置 WorkflowNotification Mailer

       1. 進入OAM,需要有System Administrator職責權限:
       5.JPG

2008-11-24 11:44 上傳
下載附件 (27.32 KB)



       2. 進入 Worflow Manager
       6.JPG

2008-11-24 11:44 上傳
下載附件 (30.4 KB)



       3. 點擊畫面靠下的Service Components
       7.JPG

2008-11-24 11:44 上傳
下載附件 (10.49 KB)



       4.進入Service Components界面
       點擊欄位Container欄的任一鏈接,都會進入啓動服務界面。
       8.JPG

2008-11-24 11:44 上傳
下載附件 (148.76 KB)



      5.進入後,啓用三個container服務
      啓動完這三個服務後,Service Components大部分服務都起來了。
       9.JPG

2008-11-24 11:44 上傳
下載附件 (26.91 KB)



      6.返回workflow主頁,Agent listeners 和service Components 起來了,還差一個Notificaitons mailer 起來了就OK了。點擊它進行配置。
       10.JPG

2008-11-24 11:44 上傳
下載附件 (15.92 KB)



      7.點擊Edit,進行配置
       11.JPG

2008-11-24 11:44 上傳
下載附件 (22.54 KB)



      8. 選擇Workflow Notification Mailer,點擊下面的Edit按鈕,有8個步驟,跳過1、2、5、6;第7步可選
      第三步驟中上面三行默認,紅色框中填入我們配置的郵件帳號。
      另外建議:server name最好用IP,這樣通信也來的快。最下面要建立兩個Folder,你要是輸入PROCESS,DISCARD點擊下一步不成功的話,就在自己電腦上先配  個 outlook客戶端,連上test1帳戶,建兩個folder,這樣再下步驟準能成功。
      12.JPG

2008-11-24 11:55 上傳
下載附件 (74.45 KB)



     9.第四步驟中,紅色框中輸入配置的帳號。
    其他全默認。
    13.JPG

2008-11-24 11:55 上傳
下載附件 (24.24 KB)



    10.這時三個服務都起來了。Alert 就可以郵遞出來了。
      14.JPG

2008-11-24 11:57 上傳
下載附件 (9.57 KB)


1.3.        Alert 發送
       實際做完以上設定就可以發送郵件了,但是還是要檢查下,Alert的設定。
       1.進入Alert Manger 職責
        進入system options
       15.JPG

2008-11-24 14:20 上傳
下載附件 (13.53 KB)


        
       2.        應用patch 4676589後,Mailsystems ,Mail server Options和Response Processing功能已被閹割。所以這三個標籤中的設置隨便設置,不設置也行,已經無效了。值得一提是Response Processing功能,workflow mailer也有此功能,而且更加強。
       16.JPG

2008-11-24 14:20 上傳
下載附件 (51.69 KB)


      
      3.檢查下MoreOptions,默認就行,如果改動過,要注意Coucurrent Manager Name的配置是否正確。Message Elements, 設置郵件格式的,什麼郵件頭尾等等。
       17.JPG

2008-11-24 14:22 上傳
下載附件 (58.68 KB)


      
      4.建立一個Alert,測試下,可以收到(開發alert的資料,網上一大把,隨便下載個試一試,格式比較麻煩,可以參考11ihelp,寫的十分詳細)
進入Alert—Define定義一個Periodic Alert(詳細參考如何開發Alert)
       18.JPG

2008-11-24 14:25 上傳
下載附件 (77.48 KB)

 

 

2.        Oracle Alert  異常處理
       按照以上步驟配置workflow就可以發送Alert郵件了,但那是理想情況,實際生產環境中,服務正常,無錯誤日誌,就是不能發送郵件,考慮下隊列問題了。
很多歷史WF資料處於open狀態未即時清理,在WF郵件功能啓用後,這些資料狀態會處於mail狀態,數據較大,導致產生郵件隊列。所以這些隊列必須要清理掉。
       19.JPG

2008-11-24 14:34 上傳
下載附件 (19.75 KB)


      隊列就有兩個WF_DEFERRED 和WF_NOTIFICATION_OUT隊列。
我碰到的正好是WF_NOTIFICATION_OUT隊列產生問題,判斷依據是APPLSYS.AQ$WF_NOTIFICATION_OUT有大量資料且處於READY狀態,且WF_NOTIFICATIONS表中大量資料處於MAIL狀態。
     
      WF_DEFERRED隊列清理,寫在9樓。

      2.1.        Purge E-mail Notifications
      兩種方法:update wf_notifications 表中mailstatus或者recreate此表。

     1.        update update wf_notifications
     SQL> update WF_NOTIFICATIONS set mail_status = 'SENT' where mail_status = 'MAIL';
     
     2.        Run the script wfntfqup.sql to purge the WF_NOTIFICATION_OUT queue and rebuild it
sqlplus apps/******@newtest 執行 wfntfqup.sql

      
     2.2.        Purge WF_NOTIFICATION_OUT Queue
     1.        關閉Notification mailers、Agent listeners、Service components三個服務。
   
     2.        Backup WF_NOTIFICATION_OUT
     create table APPLSYS.AQ$WF_NOTIFICATION_OUT_BAK
     as
     select *
     from APPLSYS.AQ$WF_NOTIFICATION_OUT
     where CORR_ID like 'APPS:ALR%' and msg_state in ('READY','WAIT');
     
     3 .   Drop WF_NOTIFICATION_OUT queue
     sqlplus apps/apps
     Exec dbms_aqadm.stop_queue( queue_name => 'APPLSYS.WF_NOTIFICATION_OUT', wait => FALSE);

     exec dbms_aqadm.drop_queue_table( queue_table => 'APPLSYS.WF_NOTIFICATION_OUT', force =>TRUE);

     4.Recreate WF_NOTIFICATION_OUT
     SSH登陸AP服務器,linux 命令行執行:

     a. Recreate the JMS queues
     sqlplus apps/apps @$FND_TOP/patch/115/sql/wfjmsqc2.sql applsys apps

    b. Add the subscribers
     sqlplus apps/apps @$FND_TOP/patch/115/sql/wfmqsubc2.sql APPLSYS APPS

     5.        Repopulate the WF_NOTIFICATION_OUT queue
     sqlplus apps/apps @$FND_TOP/patch/115/sql/wfntfqup APPS apps APPLSYS
     
     6.        執行以下script,將剛備份的未發送的而需要發送的Alert郵件,注入重建之後的WF_NOTIFICATION_OUT中。
      set serveroutput on size 100000;
declare
x_out_queue varchar2(80) := 'APPLSYS.WF_NOTIFICATION_OUT';
x_enqueue_options dbms_aq.enqueue_options_t;
x_message_properties dbms_aq.message_properties_t;
x_msgid RAW(16);
i number := 0;
p_event SYS.AQ$_JMS_TEXT_MESSAGE;

cursor msg is
select * from APPLSYS.AQ$WF_NOTIFICATION_OUT_BAK
where msg_state in ('READY','WAIT');

begin

for m1 in msg loop

x_out_queue := 'APPLSYS.'||m1.queue;
x_message_properties.correlation := m1.corr_id;
--x_message_properties.original_msgid := m1.msg_id;
x_message_properties.priority := m1.msg_priority;

x_message_properties.recipient_list(1) := sys.aq$_agent(m1.consumer_name,
null,
0);
if (m1.msg_state = 'WAIT') and (m1.delay > sysdate) then
x_message_properties.delay := ((sysdate - m1.delay)*86400);
else
x_message_properties.delay := 0;
end if;
--dbms_output.put_line('msg.msgid = ' || m1.msg_id);

DBMS_AQ.ENQUEUE(
queue_name => x_out_queue,
enqueue_options => x_enqueue_options,
message_properties => x_message_properties,
payload => m1.user_data,
msgid => x_msgid); /* OUT*/

--dbms_output.put_line('x_msgid = ' || x_msgid);

if i = 20 then
i := 0;
commit;
else
i := i + 1;
end if;
end loop;

commit;
exception
when others then
dbms_output.put_line('sqlerrm = ' || sqlerrm);
end;
      
       7.        啓動Notification mailers、Agent listeners、Service components三個服務。確保所有服務啓動,測試後問題可解決。

附一:
       未上patch之前的Alert發送郵件配置。
       1.配置sendmail,進入linux,root權限:

           1.1.        修改sendmail.mc文件
            檔案路徑:/etc/mail
            #vi sendmail.mc

           (1).修改第23行的dnl define((`SMART_HOST',` 192.168.x.x '),將192.168.x.x改爲ERP APserver地址
           (2).修改146行的LOCAL_DOMAIN(`192.168.x.x '),將192.168.x.x改爲網關地址
           (3).註釋DEAMON_OPTIONS(Port=SMTP,Addr=127.0.0.1,Name=MTA),此句前加上#,如果不去掉此句,其他PC無法訪問這個mailserver

          1.2.    編譯sendmail.mc文件
           #m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

          1.3.         重啓服務
           #service sendmail restart

          1.4 .    注意DNS
          #netconfig
          必須填入正確的DNS,特別要注意,偉大工程別栽這裏。
          #service network restart
         
       2.設置Alert系統選項
         
          2.1.        登入系統進入Alert manager 職責
          進入system-options
          15.JPG

2008-11-24 14:52 上傳
下載附件 (13.53 KB)


        
          2.2   進入配置選項
          郵件系統中,選擇Unix:sendmail 打勾:
          20.JPG

2008-11-24 14:56 上傳
下載附件 (43.54 KB)



          2.3        郵件服務器選項中
          紅色框:database/server name內輸入ERP AP 地址,如erpap.zqcau.com(下圖沒輸,應該要輸入)
          21.JPG

2008-11-24 14:56 上傳
下載附件 (51.76 KB)


          輸入帳號和密碼,帳號root,密碼………
          剩下標籤默認,完成。

附二:
       清理WF_DEFERRED隊列。
       WF_DEFERRED 隊列在 WF_DEFERRED AGENTS not running時做清理,其實其佔用表空間較大,如果超過幾百兆或者到G級別時,也可以考慮清理一次,提高效能。
      
       1.        如果是clone系統,WF_DEFERRED AGENTS not running時需執行下面操作:

          a.        關閉所有服務
          b.        $sqlplus apps/pwd
          c.        SQL>exec fnd_conc_clone.setup_clean;
         d.        Run AutoConfig on ALL tier nodes
         e.        重啓所有服務,參考1.2開啓WF三個服務。


         2.   清理WF_DEFERRED隊列

         a. 參考關閉wf三個發郵件的服務
         b. 執行script
         Exec dbms_aqadm.stop_queue( queue_name => 'WF_DEFERRED', wait => FALSE);

         Exec dbms_aqadm.drop_queue(queue_name=> 'WF_DEFERRED');

         Exec dbms_aqadm.drop_queue_table( queue_table => 'WF_DEFERRED', force => TRUE);

         commit;
         c.        Recreate WF_DEFERRED
        sqlplus apps/apps @$FND_TOP/patch/115/sql/wfevquec.sql APPLSYS APPS WF_DEFERRED APPS
         Enter the values for the following parameters:

        max-retries=5

         retry-delay=3600

         retention=86400
         重建之後WF_DEFERRED AGENTS即可running。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章