这与过去的here有关。
这正在11和12中进行测试,但最终只会在12中进行。
我有一整套程序。以前,该作业是通过指向单个过程的作业将其制作为预定作业的,该过程依次调用了其余程序。现在,它已转换为链式作业。
当设置要发送失败和成功消息时,我的连锁工作只会发送成功电子邮件。当将其设计为计划作业时,由于某种原因(有很多)而失败时,将发送失败的电子邮件。
为了进行测试,我提出了以下情况以失败
DBMS_SCHEDULER.CREATE_PROGRAM (
PROGRAM_NAME => 'FAIL_1',
PROGRAM_TYPE => 'PLSQL_BLOCK',
PROGRAM_ACTION => 'BEGIN
SELECT POSITION FROM DUAL;
END;',
ENABLED => TRUE,
COMMENTS => '');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
CHAIN_NAME => 'HR_LOADER_CHAIN',
STEP_NAME => 'F_1',
PROGRAM_NAME => 'FAIL_1');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
CHAIN_NAME => 'HR_LOADER_CHAIN',
CONDITION => '"TRUE',
ACTION => 'START "F_1"',
RULE_NAME => 'FR_1',
COMMENTS => 'FAIL RULE 1');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
CHAIN_NAME => 'HR_LOADER_CHAIN',
CONDITION => '"F_1" FAILED',
ACTION => 'END',
RULE_NAME => 'FINISH2',
COMMENTS => '');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
CHAIN_NAME => 'HR_LOADER_CHAIN',
CONDITION => '"F_1" STOPPED',
ACTION => 'END',
RULE_NAME => 'FINISH3',
COMMENTS => '');
如果该步骤失败,则不会发送任何电子邮件,并且链将继续运行,直到我杀死它为止。日志确实显示该步骤已运行并且失败。
这是错误消息,因此程序代码将失败。
从第1行开始的错误- 开始 从双重选择位置; 结束; 错误报告 - ORA-06550:第2行,第28列: PL / SQL:ORA-00904:“位置”:无效的标识符 ORA-06550:第2行,第21列: PL / SQL:忽略了SQL语句 06550。00000-“%s行,%s列:\ n%s” *原因:通常是PL / SQL编译错误。 *动作:
万一它很重要,这就是我配置电子邮件的方式
Begin
dbms_scheduler.set_scheduler_attribute('email_server','Appmail.domain');
dbms_scheduler.set_scheduler_attribute('email_sender','my-application@email.domain');
End;
BEGIN
DBMS_SCHEDULER.add_job_email_notification (
job_name => 'my_CHAIN_JOB',
recipients => 'Fering@email.domain',
events => 'job_failed, job_succeeded' );
END;
该行为似乎是当我的FAIL_1程序执行其工作(失败)时,该链中的该步骤在运行日志中被标记为失败,然后该链刚刚挂起。实际上,我必须运行代码才能停止锁定。
我尝试对失败和停止条件进行“完成”步骤,但均未响应该事件。
更新:从未解决链式电子邮件无法正常工作的问题。需求发生了变化,我们最终回到了定期安排的工作,可以根据需要处理电子邮件。