oracle job不自动执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle job不自动执行相关的知识,希望对你有一定的参考价值。

oracle job不自动执行?Copyright © 1999-2020, CSDN.NET, All Rights Reserved


 登录
ORACLE JOB无法自动执行 原创
2019-06-28 15:57:22
 1点赞

江湖见 

码龄3年

关注
背景:本人项目中有几个调度程序,其中有个job是每月月底最后一天晚上12点过执行,一开始运行的好好的 ,过了几个月业务需求调整,改为每月28号晚上12点过执行,于是我把job的运行时间由原来的TRUNC(ADD_MONTHS(SYSDATE,1),'MM')+1/1440

改为了TRUNC(SYSDATE,'MM')+28+5/1440,验证运行时间写的对不对

select to_char(TRUNC(SYSDATE,'MM')+28+5/1440,'yyyy-MM-dd hh24:mi:ss') from dual;
运行结果为

2019-05-29 00:05:00

看似没问题,然后我就编译 运行一次, job执行完,没有报错,确保存储过程脚本写的没问题,查看下次执行时间也正常,ok下班回家。。。。。

第二天来一看,数据没生成,再去看调度任务,NEXT_DATE时间不对,FAILURES错误次数长达13次, 吓得我赶紧先修改执行时间(必须必当前时间大),手动执行这个job。。。执行完再broken。

期间尝试改过很多运行时间的表达式,但每次到月底都是第一次手动编译运行没问题(排除存储过程语句写的是否问题),其次再等他自动运行 就不行了。网上看过很多解决方案,很多说是权限问题。。。 差点把我带跑偏,如果是权限问题 不可能其他job都能执行成功,于是问题还是出在表达式这。

在一个偶然的机遇下,请教了一位高人,他说这个表达式 貌似不能直接trunc sysdate ,必须要套一层函数 ,可以是last_day,亦或是add_month等。于是我再一次抱着尝试的心态去改改。

我改成了TRUNC(ADD_MONTHS(SYSDATE,0),'MM')+28+5/1440 (每月28号晚12点05分执行job...就是29日凌晨)

先验证下

select to_char(TRUNC(ADD_MONTHS(SYSDATE,0),'MM')+28+5/1440,'yyyy-MM-dd hh24:mi:ss') from dual;
--运行结果是2019-06-29 00:05:00
ok没问题 再编译运行一次,ok也没问题,坐等晚上自动执行,由于是今天才改的,只能等今晚过了才能得知结果,如果成功了 我再回来 更新下。
参考技术A 所以这应该是没把这些字都是用所认为这个岁数,要不然他整天社会上操作的。 参考技术B 不实他不执行的话,你看能不能用能报错呢?如果报错的话,是不可能处于老旧今生。 参考技术C Oracle job不能自动执行,这个是正常的现象了,你可以是不能自动执行的。 参考技术D 这不自动执行,是因为有些你的知识性人民币不够正确

oracle查看job执行记录

oracle怎么查看job执行记录

我新建了一个job 定于每个月5日运行~

我想查看这个job历史的运行记录 也就是比如 半年后 我查看最近6个月 这个job的运行情况

1、点击plsql的图标,进入登录界面,输入用户名和密码。

2、在左侧找到DBMS_JOB,记住是这个名称的job,该目录下还有一个job。

3、右键点击new。

4、在弹出的窗口中,在下图指的箭头处【what】输入需要执行的内容,该实例是执行一个存储过程。

5、如果不方便编写执行内容,可以点击如下图按钮进入大界面编写。

6、编写成功后,点击下方按钮提交,就完成了。

参考技术A job的运行情况无非是成功和失败,oracle也不会记录的

select * from dba_jobs 所有的JOB
select * from dba_jobs_running 正在运行的本回答被提问者采纳

以上是关于oracle job不自动执行的主要内容,如果未能解决你的问题,请参考以下文章

oracle job不自动执行,手动可以执行

Oracle job为啥不能自动执行,手工执行可以

linux上自动执行oracle

oracle job 时间每五分钟执行怎么写

oracle 物化视图 job

Oracle的自动维护任务