053-645
Which two statements are true about a job chain? (Choose two.)
A. A job chain can contain a nested chain of jobs.
B. The jobs in a job chain cannot have more than one dependency.
C. A job of the CHAIN type can be run using event-based or time-based schedules.
D. The jobs in a job chain can be executed only by using the events generated by the Scheduler
此题考点是 job 链。作业链是一系列任务所组成的,为了完成共同的目标。作业链可以用调度实施,依赖外部一个或多个之前的 job。
要创建和使用一个链,你需要按顺序进行:
1.创建一个链对象
例如:
BEGIN
DBMS_SCHEDULER.CREATE_CHAIN (
chain_name => 'my_chain1',
rule_set_name => NULL,
evaluation_interval => NULL,
comments => 'My first chain');
END;
/
2.定义链的步骤
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
chain_name => 'my_chain1',
step_name => 'my_step1',
program_name => 'my_program1');
DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
chain_name => 'my_chain1',
step_name => 'my_step2',
program_name => 'my_chain2');
END;
/
--可以使用 event_schedule_name 来指定这个步骤需要等待的事件
3.增加规则
规则定义了在步骤运行时相互的依赖关系,在每个步骤的最后,所有的规则会评估,来发现下一步的动作,如果有多个条件满足,会发生多个动作。可以设置 evaluation_interval 的属性来设置评估的时间间隔来定期的评估。
例如:
stepname [NOT] {SUCCEEDED|FAILED|STOPPED|COMPLETED}
stepname ERROR_CODE {comparision_operator|[NOT] IN} {integer|list_of_integers}
其中 ERROR_CODE 也可以是 PL/SQL 中捕获的自定义异常,例如
RAISE_APPLICATION_ERROR(-20100, errmsg);
那么链规则必须是:
stepname ERROR_CODE=20100
定义好规则后,使用 define_chain_rule 指定:
BEGIN
DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
chain_name => 'my_chain1',
condition => 'TRUE',
action => 'START step1',
rule_name => 'my_rule1',
comments => 'start the chain');
DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
chain_name => 'my_chain1',
condition => 'step1 completed',
action => 'START step2',
rule_name => 'my_rule2');
END;
/
4.启用链:
BEGIN
DBMS_SCHEDULER.ENABLE ('my_chain1');
END;
/
5.创建链中指定的 job
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'chain_job_1',
job_type => 'CHAIN',
job_action => 'my_chain1',
repeat_interval => 'freq=daily;byhour=13;byminute=0;bysecond=0',
enabled => TRUE);
END;
/
链的运行:
在完成创建 job 使用链之后,可以使用 RUN_JOB 过程来运行这个 job(也就是运行了链),但是需要设置其中 use_current_session 为 FALSE
你也可以直接使用 RUN_CHAIN 来运行一个链,而不用运行第一个创建的 job。也可以只运行链的一部分。
D 错