Oracle Scheduler Chain 的用法

本人是借荐他人的文章目的是学习dbms_scheduler创建CHAIN类型的JOB,至于EXECUTABLE类型的JOB我己经在<DBMS_SCHEDULER执行PERL脚本加载数据>介绍了.下面转网上相关介绍:

OracleCHAIN,也就是链,是将一串需要完成的作业连在一起,根据每一个步骤完成的不同结果来确定下面的哪一个动作需要被完成。实际上也就是if .. then ..else。比如,可能有如下的定义,,step 1成功执行,执行step 2,如果step 1执行失败,执行step 3,如果step 2或step 3 执行成功,退出整个chain,如果step 2 或step 3执行失败,发送邮件并退出。CHAIN的主要步骤包括定义程序(做什么)、定义CHAIN步骤(总步骤),以及CHAIN的规则(如何做)。本文主要描述了chain的一些步骤并给出示例供大家参考。有关job,program可以参考Oracle在线文档。

CHAIN定义及实施的主要步骤1、创建程序(定义每一步骤需要执行的子程序,调用DBMS_SCHEDULER.create_program)2、创建CHAIN(调用DBMS_SCHEDULER.create_chain)3、定义CHAIN步骤(也就每一步的顺序)4、定义CHAIN规则(定义每一步的执行结果成功或失败后的处理方式)5、激活CHAIN6、将chain添加到job7、CHAIN的单步调试

本人以ETL_TEST用户为例进行测试:

1.创建用户并赋予权限

create user etl_test identified by etl_testdefault tablespace userstemporary tablespace temp;

grant create job to etl_test;grant create evaluation context to etl_test; grant create rule set to etl_test; grant create rule to etl_test;

2.创建测试表及序列

create table tb_schduler_chain( id number, job_name varchar2(30),run_date date);

create sequence tb_schduler_chain_seq;

3.下面为CHAIN定义及实施的主要步骤

A.创建程序,创建TEST_PRO_1,TEST_PRO_2,TEST_PRO_3三个程序,将job运行情况记录到测试表中

begin dbms_scheduler.create_program ( program_name => ‘TEST_PRO_1’, program_type => ‘PLSQL_BLOCK’, program_action => ‘begin insert into tb_schduler_chain (id, job_name, run_date) values (tb_schduler_chain_seq.nextval, ”JOB_NAME_1”, sysdate); commit; end;’, enabled => TRUE, comments => ‘program for first link in the chain.’ ); dbms_scheduler.create_program ( program_name => ‘TEST_PRO_2’, program_type => ‘PLSQL_BLOCK’, program_action => ‘begin insert into tb_schduler_chain (id, job_name, run_date) values (tb_schduler_chain_seq.nextval, ”JOB_NAME_2”, sysdate); commit; end;’, enabled => TRUE, comments => ‘program for second link in the chain.’); dbms_scheduler.create_program ( program_name => ‘TEST_PRO_3’, program_type => ‘PLSQL_BLOCK’, program_action => ‘begin insert into tb_schduler_chain (id, job_name, run_date) values (tb_schduler_chain_seq.nextval, ”JOB_NAME_3”, sysdate); commit; end;’, enabled => TRUE, comments => ‘program for last link in the chain.’);end;

B.创建CHAIN,此步一般只需要CHAIN名称即可.

begin dbms_scheduler.create_chain ( chain_name => ‘TEST_CHAIN’, rule_set_name => NULL, evaluation_interval => NULL, comments => ‘test chain’ );end;

C.定义STEP CHAIN 定义CHAIN的每一个步骤以及其对应的PROGRAM_NAME,也就是每一步需要做什么

世上没有绝望的处境,只有对处境绝望的人。

Oracle Scheduler Chain 的用法

相关文章:

你感兴趣的文章:

标签云: