oracle数据库定时任务时间设置,oracle定时任务(dbms_job)的时间设置参考
最后那一项可以参考如下:
每天午夜12点 ‘TRUNC(SYSDATE + 1)‘
每天早上8点30分 ‘TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)‘
每星期二中午12点 ‘NEXT_DAY(TRUNC(SYSDATE ), ‘‘TUESDAY‘‘ ) + 12/24‘
每个月第一天的午夜12点 ‘TRUNC(LAST_DAY(SYSDATE ) + 1)‘
每个季度最后一天的晚上11点 ‘TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ‘Q‘ )
-1/24‘
每星期六和日早上6点10分 ‘TRUNC(LEAST(NEXT_DAY(SYSDATE, ‘‘SATURDAY"),
NEXT_DAY(SYSDATE, "SUNDAY"))) + (6*60+10)/(24*60)‘
其中li_jobno是它的ID,可以通过这个ID停掉这个任务,最后想说的是不要执行多次,你可以在里面管理起来,发现已经运行了就不SUBMIT
select TRUNC(SYSDATE,‘MONTH‘),last_day(sysdate) from dual
--每个月的第一天和最后一天
每天运行一次 ‘SYSDATE + 1‘
每小时运行一次 ‘SYSDATE + 1/24‘
每10分钟运行一次 ‘SYSDATE + 10/(60*24)‘
每30秒运行一次 ‘SYSDATE + 30/(60*24*60)‘
每隔一星期运行一次 ‘SYSDATE + 7‘
不再运行该任务并删除它 NULL
每年1月1号零时
trunc(last_day(to_date(extract(year from
sysdate)||‘12‘||‘01‘,‘yyyy-mm-dd‘))+1
-------------------
Job的参数:
一:时间间隔执行(每分钟,每天,每周,:每月,每季度,每半年,每年)
interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,
就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
1:每分钟执行
Interval
=> TRUNC(sysdate,‘mi‘) + 1/
(24*60) 或 Interval
=> sysdate+1/1440
2:每天定时执行
例如:每天的凌晨1点执行
Interval
=> TRUNC(sysdate) + 1 +1/ (24)
3:每周定时执行
例如:每周一凌晨1点执行
Interval
=> TRUNC(next_day(sysdate,‘星期一‘))+1/24
4:每月定时执行
例如:每月1日凌晨1点执行
Interval
=>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5:每季度定时执行
例如每季度的第一天凌晨1点执行
Interval
=> TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) + 1/24
6:每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval
=> ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+1/24
7:每年定时执行
例如:每年1月1日凌晨1点执行
Interval
=>ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+1/24
二:
在一个特定的时间间隔后,重复运行该任务。
在特定的日期和时间运行任务。
任务成功完成后,下一次执行应该在一个特定的时间间隔之后。
第一种调度任务需求的日期算法比较简单,即‘SYSDATE+n‘,这里n是一个以天为单位的时间间隔。表1给出了一些这种时间间隔设置的例子。
表1 一些简单的interval参数设置例子
描述 Interval参数值
每天运行一次 ‘SYSDATE + 1‘
每小时运行一次 ‘SYSDATE + 1/24‘
每10分钟运行一次 ‘SYSDATE + 10/(60*24)‘
每30秒运行一次 ‘SYSDATE + 30/(60*24*60)‘
每隔一星期运行一次 ‘SYSDATE + 7‘
不再运行该任务并删除它 NULL
表1
所示的任务间隔表达式不能保证任务的下一次运行时间在一个特定的日期或者时间,仅仅能够指定一个任务两次运行之间的时间间隔。例如,如果一个任务第一次运行是在凌晨12点,interval指定为‘SYSDATE
+
1‘,则该任务将被计划在第二天的凌晨12点执行。但是,如果某用户在下午4点手工(DBMS_JOB.RUN)执行了该任务,那么该任务将被重新定时到第二天的下午4点。还有一个可能的原因是如果数据库关闭或者说任务队列非常的忙以至于任务不能在计划的那个时间点准时执行。在这种情况下,任务将试图尽快运行,也就是说只要数据库一打开或者是任务队列不忙就开始执行,但是这时,运行时间已经从原来的提交时间漂移到了后来真正的运行时间。这种下一次运行时间的不断“漂移”是采用简单时间间隔表达式的典型特征。
第二种调度任务需求相对于第一种就需要更复杂的时间间隔(interval)表达式,表7是一些要求在特定的时间运行任务的interval设置例子。
表 2. 定时到特定日期或时间的任务例子
描述 INTERVAL参数值
每天午夜12点 ‘TRUNC(SYSDATE + 1)‘
每天早上8点30分 ‘TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)‘
每星期二中午12点 ‘NEXT_DAY(TRUNC(SYSDATE ), ‘‘TUESDAY‘‘ ) + 12/24‘
每个月第一天的午夜12点 ‘TRUNC(LAST_DAY(SYSDATE ) + 1)‘
每个季度最后一天的晚上11点 ‘TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ‘Q‘ )
-1/24‘
每星期六和日早上6点10分 ‘TRUNC(LEAST(NEXT_DAY(SYSDATE, ‘‘SATURDAY"),
NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)‘
第三种调度任务需求无论通过怎样设置interval日期表达式也不能满足要求。这时因为一个任务的下一次运行时间在任务开始时才计算,而在此时是不知道任务在何时结束的。遇到这种情况怎么办呢?当然办法肯定是有的,我们可以通过为任务队列写过程的办法来实现。这里我只是简单介绍以下,可以在前一个任务队列执行的过程中,取得任务完成的系统时间,然后加上指定的时间间隔,拿这个时间来控制下一个要执行的任务。这里有一个前提条件,就是目前运行的任务本身必须要严格遵守自己的时间计划。
将任务加入到任务队列之前,要确定执行任务的数据库用户,若用户是scott,
则需要确保该用户拥有执行包dbms_job的权限;若没有,需要以DBA的身份将权利授予scott用户:
svrmgrl> grant execute on dbms_job to scott;
4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段
例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:
sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
/
系统提示执行成功。
Sql> print :n;
系统打印此任务的编号,例如结果为300。
如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:
sql> select job,next_date,next_sec,failures,broken
from user_jobs;
执行结果如下:
job next_date next_sec failures broken
300 2000/10/10 11:45:15 0 N
这表示任务号为300的任务,下一次将在2000/10/10
11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not
broken,或强制调用dbms_job.run来重新执行它。
除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change
、
dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。
总结:
1、 每分钟执行
Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)
2、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
3、 每周定时执行
例如:每周一凌晨2点执行
Interval =>
TRUNC(next_day(sysdate,‘星期一‘))+2/24
4、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) +
2/24
6、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval =>
ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+2/24
7、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval
=>ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+2/24
what
参数是将被执行的PL/SQL代码块;
next_date
参数指识何时将运行这个工作。写Job的时候可以不指定该值;
interval
参数何时这个工作将被重执行。
原文:http://www.cnblogs.com/xueershewang/p/7355286.html
oracle数据库定时任务时间设置,oracle定时任务(dbms_job)的时间设置参考相关推荐
- oracle数据库存储结构语句,oracle之物理数据库结构描述
oracle之物理数据库结构概述 oracle的物理结构其实是由各种各样的文件组成的, 其中与数据库相关的有: 数据文件(data file):这些文件是数据库的主要文件:其中包括数据表.索引和所有其 ...
- oracle数据库没有选项,创建oracle数据库时,出现ORA-00922: 选项缺失或无效
sdd53HOME 新建oracle数据库时遇到ORA-00922: 选项缺失或无效的问题,如图: 原因:一般是语句的语法有问题.比如命名不对,关键字写错等等.对于非标准的命名,一般采用双引号来创建. ...
- oracle数据库的拼接字符串,Oracle数据库拼接字符串
Ora-03113\Ora-03114与Oracle In 拼接字符串的问题 刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将 ...
- 没有oracle客户端可以连接数据库,Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端)...
本文主要向大家介绍了Oracle数据库之SqlDbx连接oracle(无需安装Oracle客户端),通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 标签:acl str ...
- oracle数据库怎么分组查询,oracle数据库之分组查询
本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1 多表查询2)而在 ...
- oracle数据库频繁被锁,Oracle数据库账号频繁被锁定的原因排查
在Oracle数据库操作中,登录Oracle账号时提示失败,而且Oracle账号频繁被锁定.造成此故障的原因是什么呢?本文就介绍了这一过程,通过逐步排查我们就能找到该故障的原因了. 下面记录下查找这个 ...
- oracle数据库exp备份表,oracle数据库exp备份表
Oracle exp/imp,备份或导入时注意的事项 Oracle exp/imp,备份或导入时注意的事项: 本篇主要讲述的是Oracle exp/imp备份导入的实际操作中需要注意的事项的介绍,凡事 ...
- oracle数据库初始化失败怎么办,oracle数据库正常停止
利用dbstart和dbshut脚本自动启动和停止数据库的问题 客户的两台IBM Power 740小型机使用HACMP软件创建互备关系的数据库服务器,每台小型机运行一个数据库,任何一台服务器出现故障 ...
- oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总
ORACLE数据库常见问题汇总,oracle常见问题汇总 提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from ...
- 本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案
本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案 参考文章: (1)本机未装Oracle数据库时N ...
最新文章
- Python 技术篇-requests发送post请求传文件给flask服务端报405、400问题解决方法
- 数据库:redis和MySQL如何做到数据的一致性?
- 《金色梦乡》金句摘抄(十)
- python 定时器_按键精灵定时器介绍和使用,不会的小伙伴速速看看精辟
- 无序列表圆点变空心_前端HTML -- 列表标签
- python的一些问题解决方法
- 算法笔记:简单的字符串模式匹配-BF算法
- 指针的指针指向指针数组的指针
- 思凡软件(思凡全功能拓扑检查工具)
- Ubuntu搭建FTP服务器
- EBT 道客巴巴的加密与破解 序章
- 登录服务器时显示 IE COOKIE阻止,[IE问题]IE相关设置-智明协同
- Switch开关大调节和提示文字样式调节
- python改变当前工作目录_在python中更改当前工作目录
- 我,48岁高管,失业2年找不到工作:职场中年,还有上坡路吗?
- 又是一年毕业季,你拿什么打动面试官?
- 单选题 计算机软件一般包括,2016年计算机一级考试《MSOffice》单选题练习及答案...
- 系统测试常用测试方法
- STM32应用开发实践教程:智能小车电机测速模块的应用开发
- java 下载样板Excel文件
热门文章
- Chrome 解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。
- 中冠百年|成为有钱人的六个步骤
- pnpm创建项目无法加载文件如何解决?
- linux调度周期systick怎么看,Cortex-M0系统滴答定时器Systick详解
- mysql 类似于check_【小白福利—初级DBA入门必看】MySQL常用工具介绍(六)——客户端工具MySQL_check...
- 保留小数点1位 php,PHP保留小数位的三种方法
- 用if语句实现对输入年份是否为闰年的判断、闰年的定义
- 机器学习从入门到创业手记-2.1.4 分类决策树与去还是不去
- corosync使用
- 同样是网络加速,企业为何愿意选择华为云CDN?