1

我很难通过 DBMS_SCHEDULER 发送电子邮件通知。

我已经完成了关于添加电子邮件通知和配置邮件服务器的说明,但我仍然没有收到任何电子邮件。我在 UTL_MAIL(使用过程发送邮件)和 Oracle Enterprise Manager(获取备份和可用性电子邮件,它们工作正常)上使用相同的邮件服务器设置。我宁愿不使用 UTL_MAIL,因为它不提供简单性和我希望通过调度程序电子邮件实现的灵活性。

下面我们有我配置的服务器设置以及我如何尝试创建将发送通知的作业。

/*Settings*/

exec  dbms_scheduler.set_scheduler_attribute('email_server','xxx');

exec  dbms_scheduler.set_scheduler_attribute('email_sender','Scheduler@domain.com');

/* Dont think this is needed but added anyway, this allows UTL_MAIL to work*/

alter system set smtp_out_server = 'xxx';
begin
  dbms_network_acl_admin.create_acl (
    acl         => 'dbms_scheduler.xml',
    description => 'Allow mail to be send',
    principal   => 'SCHEMA',
    is_grant    => TRUE,
    privilege   => 'connect'
    );
    commit;
end;

begin
  dbms_network_acl_admin.add_privilege (
  acl       => 'dbms_scheduler.xml',
  principal => 'SCHEMA',
  is_grant  => TRUE,
  privilege => 'resolve'
  );
  commit;
end;

begin
  dbms_network_acl_admin.assign_acl(
  acl  => 'dbms_scheduler.xml',
  host => 'xxx'
  );
  commit;
end;

/*Create a quick, simple job*/

BEGIN
    DBMS_SCHEDULER.CREATE_JOB (
            job_name => '"SCHEMA"."EMAIL_TEST"',
            job_type => 'STORED_PROCEDURE',
            job_action => 'SCHEMA.DO_MOD',
            number_of_arguments => 0,
            start_date => NULL,
            repeat_interval => NULL,
            end_date => NULL,
            enabled => FALSE,
            auto_drop => FALSE,
            comments => '');

    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"SCHEMA"."EMAIL_TEST"', 
             attribute => 'restartable', value => TRUE);


    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"SCHEMA"."EMAIL_TEST"', 
             attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_RUNS);
    DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"SCHEMA"."EMAIL_TEST"', 
             attribute => 'raise_events', value => '511');
    DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (    
             job_name => '"SCHEMA"."EMAIL_TEST"', 
             recipients => 'user@xxx',
             sender => 'oracle@xxx',
             subject => 'Oracle Scheduler Job Notification - %job_owner%.%job_name%.%job_subname% %event_type%',
             body => 'Job: %job_owner%.%job_name%.%job_subname%
Event: %event_type%
Date: %event_timestamp%
Log id: %log_id%
Job class: %job_class_name%
Run count: %run_count%
Failure count: %failure_count%
Retry count: %retry_count%
Error code: %error_code
%Error message: %error_message%',
             events => 'job_started, job_broken, job_chain_stalled, job_completed, job_disabled, job_failed, job_over_max_dur, job_run_completed, job_sch_lim_reached, job_stopped, job_succeeded',
                filter_condition => NULL 
             );
    DBMS_SCHEDULER.enable(
             name => '"SCHEMA"."EMAIL_TEST"');
END;

此代码全部成功完成,但我没有收到任何电子邮件。我还可以看到 user_scheduler_notifications 中的条目,但什么也没收到。

4

0 回答 0