[userjobs]实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[userjobs]实例相关的知识,希望对你有一定的参考价值。

于2017-11-10 需要设置每天下午五点钟自动跑的批处理,新增的job,调用核心package。。

创建job:
variable job1 number;
begin
sys.dbms_job.submit(job => :job1,
what => ‘PKG_LS.p_submit(2);‘,--执行的package
next_date => sysdate,--下一次执行的时间,第一次开始执行的时间
interval => ‘ROUND(SYSDATE)+17/24‘);--固定执行的时间
commit;
end;
/
n/24 是小时
n/1440是分钟
修改job:
1:修改下次执行的时间:
exec dbms_job.next_date(job,next_date);
2:修改interval:
exec dbms_job.interval(job_id,null,null,interval);
3:修改job内容
exec job:dbms_job.what(jobno,what);
4:change:
exec dbms_job.change(398,‘PKG_LS.p_submit(2);‘
,sysdate,‘round(SYSDATE)+17/24‘)
执行job:
exec dbms_job.run(395)
删除job:
exec dbms_job.broken(1233,true) --true表示停止 false表示暂停
exec dbms_job.remove(1233) --删除job
查看警告日志的位置:
show parameter background_dump_dest
查看job运行的状态
select * from user_scheduler_running_jobs where job_name = ‘?‘ order by log_id desc;
select * from dba_scheduler_running_jobs where log_id = ?

如何诊断job执行失败
1. 看job有没有机会执行
确保init.ora中job_queue_processes参数是否被设为>0的值.
show parameter job_queue_processes
2. 看是否执行job出错.
查看alert.log获取出错信息.
3. 看是否job所调用的procedure/package出错.
这个需要你自己在procedure/package中自己书写记录错误日志的代码.
4. 经常查看你的DBA_JOBS看看,相应的job是不是broken了,
BROKEN: Y: no attempt is made to run this job
N: an attempt is made to run this job
A job can be broken in two ways:
Oracle has failed to successfully execute the job after sixteen attempts. The job has been explicitly marked as broken by using the procedure DBMS_ JOB.BROKEN.
在尝试(默认)16次后还是不能成功执行,该job会被oracle自动标记为broken=y
或者你可以手动运行看看,有什么错误提示。
EXECUTE DBMS_JOB.RUN(JOB_ID);

以上是关于[userjobs]实例的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 多实例

如何根据另一个实例组中的实例数来扩展实例组

AWS EMR实例组竞价实例扩展失败切换按需实例方法

python中类对象实例对象类属性实例属性类方法实例方法静态方法

Vue2.0 第四季第1节 实例入门-实例属性

实例报废:实例停止