欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle 调度程序学习

程序员文章站 2022-05-29 13:07:05
...

Oracle中scheduler的管理主要是通过dbms_scheduler来执行。开始前的工作:创建一个用户:create user sched identified by oracl

Oracle中scheduler的管理主要是通过dbms_scheduler来执行。

开始前的工作:

创建一个用户:create user sched identified by oracle;

grant create session to sched;

grant scheduler_admin to sched;

使用用户hr登录数据库执行下面操作:

create table sched_test(dt date,str varchar2(32));

create or replace procedure p_scheduler_test
is
begin
insert into hr.sched_test values(sysdate,'scheduler job test!');
commit;
end;
/

把存储过程p_scheduler_test 执行权限赋予用户sched

grant execute on p_scheduler_test to sched;

创建一个jobs

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'INSERT_SCHED_TEST',
job_type => 'STORED_PROCEDURE',
job_action => 'HR.P_SCHEDULER_TEST', //这里必须加上用户模式的限制
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=1');
END;
/

可以通过表user_scheduler_jobs查看作业属性,,

查看SCHEDULER管理的JOB,可以通过USER_SCHEDULER_JOB_LOG和USER_SCHEDULER_JOB_RUN_DETAILS两个视图中查询。

执行命令:exec dbms_scheduler.enable('INSERT_SCHED_TEST'); 使作业生效

执行命令:exec dbms_scheduler.disable('INSERT_SCHED_TEST'); 使作业失效

执行命令:exec dbms_scheduler.set_attribute('job_name','job_attribute','new_value'); 更改作业相关属性。

手工执行作业:exec dbms_scheduler.run_job('job_name');

job、program和schedule的关系

program:指定要做的具体内容,也就是做什么

schedule:指定作业执行的时间和频率,也就是怎么做

job:指定要执行作业,就是做

Oracle 调度程序学习