--创建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;
--一 :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;