botang 发表于 2017-11-1 19:35:53

第29次活动:2017-11-01(星期三晚上7:00-9:30)

DROP TABLE scheduler_test;

DROP SEQUENCE scheduler_test_seq;

CREATE TABLE scheduler_test (

id            NUMBER(10)    NOT NULL,

description   VARCHAR2(20)NOT NULL,

created_dateDATE          NOT NULL,

CONSTRAINT scheduler_test_pk PRIMARY KEY (id)

);


--------
CREATE SEQUENCE scheduler_test_seq;

-----

BEGIN
DBMS_SCHEDULER.create_program (
    program_name   => 'test_program_1',
    program_type   => 'PLSQL_BLOCK',
    program_action => 'BEGIN
                         INSERT INTO scheduler_test (id, description, created_date)
                         VALUES (scheduler_test_seq.NEXTVAL, ''test_program_1'', SYSDATE);
                         COMMIT;
                     END;',
    enabled      => TRUE,
    comments       => 'Step2');

DBMS_SCHEDULER.create_program (
    program_name   => 'test_program_2',
    program_type   => 'PLSQL_BLOCK',
    program_action => 'BEGIN
                         INSERT INTO scheduler_test (id, description, created_date)
                         VALUES (scheduler_test_seq.NEXTVAL, ''test_program_2'', SYSDATE);
                         COMMIT;
                     END;',
    enabled      => TRUE,
    comments       => 'Step3');

DBMS_SCHEDULER.create_program (
    program_name   => 'test_program_3',
    program_type   => 'PLSQL_BLOCK',
    program_action => 'BEGIN
                         INSERT INTO scheduler_test (id, description, created_date)
                         VALUES (scheduler_test_seq.NEXTVAL, ''test_program_3'', SYSDATE);
                         COMMIT;
                     END;',
    enabled      => TRUE,
    comments       => 'Step4');
END;

BEGIN
sys.dbms_scheduler.create_chain(
comments => 'chain1',
chain_name => '"HR"."CHAIN1"');
sys.dbms_scheduler.define_chain_event_step(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP1"',
event_schedule_name => '"HR"."SCHEDULE4"');
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP1"',
attribute => 'pause',
value => FALSE);
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP1"',
attribute => 'skip',
value => FALSE);
sys.dbms_scheduler.define_chain_step(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP2"',
program_name => '"HR"."TEST_PROGRAM_1"');
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP2"',
attribute => 'pause',
value => FALSE);
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP2"',
attribute => 'skip',
value => FALSE);
sys.dbms_scheduler.define_chain_step(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP3"',
program_name => '"HR"."TEST_PROGRAM_2"');
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP3"',
attribute => 'pause',
value => FALSE);
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP3"',
attribute => 'skip',
value => FALSE);
sys.dbms_scheduler.define_chain_step(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP4"',
program_name => '"HR"."TEST_PROGRAM_3"');
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP4"',
attribute => 'pause',
value => FALSE);
sys.dbms_scheduler.alter_chain(
chain_name => '"HR"."CHAIN1"',
step_name => '"STEP4"',
attribute => 'skip',
value => FALSE);
sys.dbms_scheduler.define_chain_rule(
chain_name => '"HR"."CHAIN1"',
condition => '1=1',
rule_name => 'RULE1',
comments => 'Rule1',
action => 'START Step1');
sys.dbms_scheduler.define_chain_rule(
chain_name => '"HR"."CHAIN1"',
condition => 'Step1 SUCCEEDED',
rule_name => 'RULE2',
comments => 'Rule2',
action => 'START Step2');
sys.dbms_scheduler.define_chain_rule(
chain_name => '"HR"."CHAIN1"',
condition => 'Step2 SUCCEEDED',
rule_name => 'RULE3',
comments => 'Rule3',
action => 'START Step3');
sys.dbms_scheduler.define_chain_rule(
chain_name => '"HR"."CHAIN1"',
condition => 'Step3 SUCCEEDED',
rule_name => 'RULE4',
comments => 'Rule4',
action => 'START Step4');
sys.dbms_scheduler.define_chain_rule(
chain_name => '"HR"."CHAIN1"',
condition => 'Step4 SUCCEEDED',
rule_name => 'RULE5',
comments => 'Rule5',
action => 'END');
sys.dbms_scheduler.enable('"HR"."CHAIN1"');
END;组装chain作业(普通的基于时间的Schedule):






select* from dba_scheduler_global_attribute;
select* from dba_scheduler_notifications;

begin
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
('email_server','station90.example.com');
end;

begin
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE
('email_sender','oracle@example.com');
end;

begin
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name       =>'HR.JOB5',
    events   =>'job_succeeded,job_completed',
recipients   =>'oracle@example.com');
end;

begin
DBMS_SCHEDULER.REMOVE_JOB_EMAIL_NOTIFICATION (
job_name         =>'HR.JOB5');
end;

错误
create or replace procedure hr.proc1
begin
update t123456 set a=2;
end;

begin
DBMS_SCHEDULER.ADD_JOB_EMAIL_NOTIFICATION (
job_name       =>'HR.JOB51',
recipients   =>'oracle@example.com');
end;

BEGIN
DBMS_SCHEDULER.add_job_email_notification (
job_name         =>'test_notification_job',
recipients       =>'oracle@example.com',
events         =>'job_failed',
filter_condition => ':event.error_code=600');
END;
/




BEGIN
sys.dbms_scheduler.disable( '"HR"."JOB51"' );
sys.dbms_scheduler.set_attribute( name => '"HR"."JOB51"', attribute => 'raise_events', value => 0);
sys.dbms_scheduler.enable( '"HR"."JOB51"' );
END;


页: [1]
查看完整版本: 第29次活动:2017-11-01(星期三晚上7:00-9:30)