我使用的是Oracle 11.2.0.1.0版。
我使用dbms scheduler创建了作业,如下所示
DECLARE
v_job_name VARCHAR2(5) := SYS.DBMS_SCHEDULER.GENERATE_JOB_NAME(prefix => 'JOB');
BEGIN
SYS.DBMS_SCHEDULER.create_job(
job_name => v_job_name,
job_type => 'PLSQL_BLOCK',
job_action => 'PKG_TEST.PROCEDURE_TEST;',
start_date => SYSDATE,
enabled => TRUE,
repeat_interval => 'freq=minutely; interval=2',
auto_drop => FALSE,
comments => 'Scheduler Test'
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Name is: ' || v_job_name);
END;
接下来,为上述作业配置电子邮件通知和SMTP服务器,如下所示,
EXEC SYS.dbms_scheduler.set_scheduler_attribute('email_server','XXXX.office365.com:XXX');
/
EXEC SYS.dbms_scheduler.set_scheduler_attribute('email_server_encryption','XXXXXX');
/
EXEC SYS.DBMS_SCHEDULER.create_credential (credential_name => 'MAILSERVER_CREDENTIAL',
username => 'XXXXX@XXXXXX.com',
password => 'XXXXXX');
/
EXEC SYS.dbms_scheduler.set_scheduler_attribute('email_server_credential','MAILSERVER_CREDENTIAL');
/
EXEC SYS.DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name => 'JOB52',
recipients => 'XXXXX@XXXXX.com',
sender => 'XXXXX@XXXX.com.XX',
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_ALL_EVENTS',
filter_condition => NULL);
选中表DBA_SCHEDULER_JOB_RUN_DETAILS,按计划运行作业。
已检查表DBA_SCHEDULER_NOTIFICATIONS,与上述作业相关的电子邮件通知。
作业正在运行,但我没有收到电子邮件通知。
我已使用第三方应用程序和电子邮件触发检查了SMTP服务器和凭据。所以SMTP和凭证是正确的。
它出了问题。我搜索了互联网并提到了Oracle doc,但不知道导致这个问题的原因。
有没有办法检查电子邮件日志或导致..?
建议我解决这个问题。提前谢谢。
答案 0 :(得分:1)
即使您的JOB成功运行,您的电子邮件也可能无法正确发送。这可能是由于经常设置防火墙规则来保护数据库服务器所致。因此,请检查您是否实际上可以从数据库服务器本身启动电子邮件。 通过SSH登录到DB服务器并执行以下命令进行检查。在执行之前,请确保替换SMTP详细信息。如果失败,请从网络级别检查原因。
curl -v --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
--mail-from 'XXXXXX@gmail.com' --mail-rcpt 'XXXXX@gmail.com' \
--user 'XXXXXX@gmail.com:PASSWORD' \
--upload-file mail.txt
mail.txt是您要发送的邮件的内容。
答案 1 :(得分:0)
我要检查的第一件事是作业是否正在运行而没有错误:
SELECT * FROM all_scheduler_job_run_details WHERE job_name = 'JOB52';
修改强>
我不知道任何电子邮件日志。您可以尝试尝试跟踪会话。此外,您似乎正在使用office365.com作为您的电子邮件服务器,它可能不接受您服务器的连接?
答案 2 :(得分:0)
尝试启用作业事件。
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'BANINST1.UH_DISABLE_GUAGMNU_BAN8'
,attribute => 'RAISE_EVENTS'
,value => SYS.DBMS_SCHEDULER.JOB_ALL_EVENTS);