ORALCE ERP Alert 设定 mail

来源:互联网 发布:数据库管理员怎么入行 编辑:程序博客网 时间:2024/04/28 13:28
一.        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,并建立邮箱test1@zqcau.com
       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。


 

0 0