oracle的dbms_scheduler

来源:互联网 发布:淘宝宠物疫苗曝光 编辑:程序博客网 时间:2024/04/28 14:39
--创建job
--一 :job_name 为创建的job的名称  
--二 :job_type目前支持三种类型:PLSQL_BLOCK :  
--  (1)PL/SQL块: 需要输入完整的PL/SQL代码;
--  (2)STORED_PROCEDURE :  存储过程: 需要指定存储过程的名字;
--  (3)EXECUTABLE:  外部程序: (外部程序可以是一个shell脚本,也可以是操作系统级别的指令). 需要输入script的名称或者操作系统的指令名
--三 :job_action:如果job_type为PL/SQL块,则该参数为具体的SQL块;如果job_type为STORED_PROCEDURE,则为存储过程名称
--四 :repeat_interval 间隔时间
--五 :enabled:如果为true,则创建是job运行
Begin
 dbms_scheduler.create_job(
 job_name => 'MyJob',
 job_type => 'PLSQL_BLOCK',
 job_action => 'insert into test values(1,''aaa'',''bbbb'');',
 start_date => Sysdate,
 repeat_interval => 'freq=minutely;interval=1',
 enabled => True); --该字段默认情况下为false,即不启用
End;
/


--建立scheduler 并向scheduler里面加入job
--1.1创建scheduler
Begin
 dbms_scheduler.create_schedule(
  schedule_name => 'MySchedule',
  start_date => Sysdate,
  repeat_interval =>  'FREQ=MINUTELY; INTERVAL=5');--五分钟调用一次
End;
/
--1.2创建job,并把他加入到scheduler中
BEGIN
DBMS_SCHEDULER.CREATE_JOB ( 
   job_name                 =>  'MyJob2',
   job_type                 =>  'PLSQL_BLOCK',
   job_action               =>  'insert into test values(1,''aaa'',''bbbb'');',
   schedule_name            =>  'MySchedule');
END;
/
--1.3再创建一个job
BEGIN
DBMS_SCHEDULER.CREATE_JOB ( 
   job_name                 =>  'MyJob3',
   job_type                 =>  'PLSQL_BLOCK',
   job_action               =>  'insert into test values(2,''ccc'',''ddd'');',
   schedule_name            =>  'MySchedule');
END;
/


--可以通过下列SQL查看当前用的scheduler的JOB
Select * From user_scheduler_jobs;


--1.4 可以将Myjob加入到scheduler中
Begin
 dbms_scheduler.set_attribute(
  name => 'MyJob',--要加入到scheduler的JOB名称
  attribute => 'schedule_name',
  value => 'MySchedule');
end;
/
--1.5 删除JOB
Begin
 dbms_scheduler.drop_job(job_name => 'MyJob',force => True);--Force可以删除正在运行的JOB
End;
/
--1.6 删除scheduler
Begin
 dbms_scheduler.drop_schedule(schedule_name => 'MySchedule',force => True);
End;
/


--1.7 如何修改job的属性(frequency:频率)
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
   name           =>   'MyJob1',
   attribute      =>   'repeat_interval',
   value          =>   'FREQ=DAILY');    //每天执行一次
END;
/


--1.8 因为加入的JOB默认情况下是不会启用的,如果要启用,可以用下面
Begin
 dbms_scheduler.enable(name => 'MyJob2,MyJob3');
End;
/


 
--1.9 Job 运行的详细情况
select log_id, job_name, status, to_char(log_date, 'DD-MON-YYYY HH24:MI') log_date 
from dba_scheduler_job_run_details where job_name = 'MyJob2';
 
 
--如何管理计划任务的权限
GRANT SCHEDULER_ADMIN TO username;
GRANT CREATE JOB TO scott;
GRANT ALTER myjob1 TO scott;
GRANT MANAGE SCHEDULER TO adam;
 
原创粉丝点击