[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);

转载于:https://www.cnblogs.com/luciameng/p/7878498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值