job的快速搭建
首先给大家分享如何快速搭建job,以及各个名词的含义
name:job名称
enabled:job是否生效。勾选默认生效,如果不勾选,手动运行也可以执行,只是不会周期性执行。
type:支持三种类型:
1)PLSQL_BLOCK——PL/SQL语句块;
2)STORED_PROCEDURE——存储过程;
3)EXECUTABLE——外部程序(外部程序可以是一个shell脚本,也可以是操作系统级别的指令)。
工作过程中多使用 pl/sql语句块
action:根据type的类型写入规则
举个简单的例子:
begin p_stat_ep_less_bag(sysdate-1.5/24,sysdate-1/24,0); end;
sysdate-1.5/24 sysdate-1/24是给存储过程传的值 ,代表的含义是开始时间为现在的一个半小时,结束时间是现在的一个小时
start date:job执行的开始时间
end date :job 从什么时候弃用(不确定可不填)
frequency:频率 执行周期 可选年/月 /天/小时/分钟为单位
interval:间隔 假设frequency选了分钟,间隔写15那就是15分钟执行一次
还有一个要选的就是job_class 选择job日志的日志级别
日志级别由两个因素决定,一个是job自己日志级别,别一个是使用的job cloass的日志级别,取两者中的最高值。
job创建时日志级别默认是DBMS_SCHEDULER.LOGGING_RUNS,
创建的job时,如果不指定job class,默认为DEFAULT_JOB_CLASS,而DEFAULT_JOB_CLASS默认logging level是DBMS_SCHEDULER.LOGGING_RUNS,
所以创建的job的logging level至少是LOGGING_RUNS。
如果不产生日志,必须禁止job自己日志级别,同时不能使用默认的默认为DEFAULT_JOB_CLASS。
将正在运行的job停止运行
启用:dbms_scheduler.enable(‘job_name’);
运行:dbms_scheduler.run_job(‘job_name’);
停止:dbms_scheduler.stop_job(‘job_name’);
在工作中我们会遇到一个问题就是知道用的那个表但是不知道出自哪个存储过程,该存储过程属于哪个job调用
根据存储过程寻找job
select * from user_scheduler_jobs t
where upper(t.JOB_ACTION) like ‘%p_stat_cd_order%’;