一个schedule的小例子

测试环境,RDBMS 11.2.0.4

-- 创建测试表

conn apps/oracle
create table t_schedule(t1 date);

APPS@test>create table t_schedule(t1 date);

Table created.

APPS@test>

-- 创建存储过程,向t_scheduler表中插入数据

create or replace procedure p_t_schedule is
begin
insert into t_schedule values(sysdate);
commit;
end p_t_schedule;

APPS@test>create or replace procedure p_t_schedule is
  2  begin
  3  insert into t_schedule values(sysdate);
  4  commit;
  5  end p_t_schedule;
  6  /

Procedure created.

APPS@test>

--创建schedule,在schedule中定义schedule名称,开始时间,调用间隔等参数

begin
-- create_schedule
dbms_scheduler.create_schedule(schedule_name => 'schedule_test',
start_date => to_date('31-12-2019 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
repeat_interval => 'Freq=Minutely;Interval=10',
end_date => to_date(null),
comments => 'TEST schedule');
end;

APPS@test>begin
  2  -- create_schedule
  3  dbms_scheduler.create_schedule(schedule_name => 'schedule_test',
  4  start_date => to_date('31-12-2019 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
  5  repeat_interval => 'Freq=Minutely;Interval=10',
  6  end_date => to_date(null),
  7  comments => 'TEST schedule');
  8  end;
  9  /

PL/SQL procedure successfully completed.

-- 创建program

begin
-- create_program
dbms_scheduler.create_program(program_name => 'program_test',
program_type => 'PLSQL_BLOCK',
program_action => 'BEGIN p_t_schedule; END;',
number_of_arguments => 0,
enabled => TRUE,
comments => 'test program');
end;


APPS@test>begin
  2  -- create_program
  3  dbms_scheduler.create_program(program_name => 'program_test',
  4  program_type => 'PLSQL_BLOCK',
  5  program_action => 'BEGIN p_t_schedule; END;',
  6  number_of_arguments => 0,
  7  enabled => TRUE,
  8  comments => 'test program');
  9  end;
 10  /

PL/SQL procedure successfully completed.

APPS@test>

-- 创建job

begin
-- create_job
dbms_scheduler.create_job(job_name => 'job_test_schedule',
program_name => 'program_test',
schedule_name => 'schedule_test',
job_class => 'DEFAULT_JOB_CLASS',
enabled => true,
auto_drop => true,
comments => 'TEST procedure');
end;

APPS@test>begin
  2  -- create_job
  3  dbms_scheduler.create_job(job_name => 'job_test_schedule',
  4  program_name => 'program_test',
  5  schedule_name => 'schedule_test',
  6  job_class => 'DEFAULT_JOB_CLASS',
  7  enabled => true,
  8  auto_drop => true,
  9  comments => 'TEST procedure');
 10  end;
 11  /

PL/SQL procedure successfully completed.

APPS@test>

-- 执行job

begin
-- Call the procedure
dbms_scheduler.run_job(job_name => 'job_test_schedule',
use_current_session => false);
end;

APPS@test>begin
  2  -- Call the procedure
  3  dbms_scheduler.run_job(job_name => 'job_test_schedule',
  4  use_current_session => false);
  5  end;
  6  /

PL/SQL procedure successfully completed.

APPS@test>

-- 查询数据

select * from t_schedule;

APPS@test>select * from t_schedule;

T1
-------------------
2019-12-31 16:46:10

1 row selected.

APPS@test>

APPS@test>select job_name,enabled,state from user_scheduler_jobs;

JOB_NAME                                                     ENABLED
------------------------------------------------------------ ----------
STATE
------------------------------
JOB_TEST_SCHEDULE                                            TRUE
SCHEDULED


1 row selected.

APPS@test>

-- 禁用job

begin
dbms_scheduler.disable('job_test_schedule');
end;

select job_name,enabled,state from user_scheduler_jobs;

-- 启用job

begin
dbms_scheduler.enable('job_test_schedule');
end;

select job_name,enabled,state from user_scheduler_jobs;

-- 删除job

扫描二维码关注公众号,回复: 8684576 查看本文章
begin
dbms_scheduler.drop_job('job_test_schedule');
end;

select job_name,enabled,state from user_scheduler_jobs;

-- 还可以通过视图查看schedule运行情况

select * from user_scheduler_job_run_details
select * from user_scheduler_job_log
select * from user_scheduler_running_jobs

END 

发布了754 篇原创文章 · 获赞 31 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/xxzhaobb/article/details/103891482