- 浏览: 407684 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 序列号 (1)
- jquery (14)
- Eclipse插件 (3)
- Flex (2)
- Rose (1)
- Myeclipse (3)
- maven (4)
- SpringSecurity (2)
- sproutcore (1)
- Http (2)
- svn (4)
- gwt (3)
- jetty (1)
- freebsd (1)
- java (29)
- Oracle (21)
- windows (1)
- Mybatis3.0 (3)
- Struts2 (6)
- easyui (1)
- JPA (1)
- UML (1)
- dom4j (1)
- design pattern (2)
- JavaScript (8)
- FreeMarker (2)
- SQLServer (1)
- memcached (3)
- urlrewrite (1)
- MonggoDB (1)
- Solr (1)
- Lucene (1)
- SQL (2)
- JODConverter (1)
- xml (2)
- pdf2swf (1)
- flexpaper (1)
- android (2)
- jsp (5)
- mobile (1)
- weblogic (3)
- Tomcat (8)
- xss (1)
- db2 (2)
- webservice (1)
- spring (2)
- Gradle (1)
- linux (4)
- ldap (1)
- 软件工程 (1)
- 开发模型 (1)
- linux系统硬件配置查看方法 (1)
- cas (3)
- mysql (1)
- HAProxy (0)
- html (1)
- Web前端 (1)
最新评论
-
super_zou:
...
世界主要国家地区下拉菜单三级联动1 -
ldl_xz:
http://www.9958.pw/post/wenku 曾 ...
利用pdf2swf将PDF转换成SWF -
superlxw1234:
请教一下楼主,你们是如何解决使用MAgent时候,一台主Mem ...
memcached集群-magent -
头子:
中间那段关于“空隙”的解决方式很赞
HTML固定表头Table -
qiankun:
比较实用,好好学习了一下
Mybatis 在dao中获取分页的总记录数
一:时间间隔执行(每分钟,每天,每周,:每月,每季度,每半年,每年)
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 参数何时这个工作将被重执行。
发表评论
-
解决Oracle 11g在用EXP导出时,空表不能导出
2017-02-09 16:30 372一、问题原因: 1 ... -
ORA-12519: TNS:no appropriate service handler found 解决
2016-12-30 13:20 372# processes、sessions是扩大并发连接数, ... -
ORA-01555: 快照过旧: 回退段号 (名称为 "") 过小ORA-22924: 快照太旧
2016-12-29 12:14 7202APPLIES TO:Oracle Database - En ... -
在Oracle中查询表的大小和表空间的大小
2016-12-29 11:18 508有两种含义的表大小。 ... -
Oracle定义DES加密解密及MD5加密函数示例
2016-12-16 11:22 586(1)DES加密函数 create or replac ... -
自定义字符串截取函数
2016-12-08 14:11 323CREATE OR REPLACE FUNCTION SBU ... -
通过v$sqlarea,v$sql查询最占用资源的查询
2016-03-15 15:47 418-----------------------v$sqlar ... -
Oracle的锁表与解锁
2015-12-11 13:58 1067Oracle的锁表与解锁 SELECT /*+ r ... -
oracle手动锁表
2015-12-11 12:19 793手工锁表: lock table tbl_t1 in ro ... -
oracle字符集设置
2015-03-16 14:40 505一、什么是Oracle字符集 Oracle字符集 ... -
行转列
2015-03-10 15:06 712select t.rank, t.Name from t_m ... -
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
2015-03-09 17:21 1667--- The error occurred in ibat ... -
更改数据库管理员密码
2014-11-05 13:24 1090更改数据库管理员密码; sqlplus /nol ... -
查询Oracle正在执行和执行过的SQL语句
2013-12-16 13:51 639---正在执行的select a.username, a.si ... -
Oracle 密码过期与锁定的设置
2012-09-26 10:28 1366查询默认的profile的密码过期参数的设置 ... -
Window 下 启动Oralce服务命令
2012-09-17 09:28 2786在window 下启动Oracle服务的命令 @ ... -
行列转换
2012-01-16 13:49 1420数据库行列转换 SQLserver 2000 行列转换 ... -
oracle 随机函数
2012-01-14 19:51 978Oracle随机函数—dbms_random ... -
Oracle 随机获取记录
2012-01-14 17:58 11301. Oracle 随机获取10条记录 ... -
Oracle创建用户、表空间、导入导出、...命令
2011-12-05 10:44 873Oracle创建用户、表空间、导入导出、...命令 / ...
相关推荐
这个过程与Submit()过程的唯一区别在于此job参数作为IN型参数传递且包括一个由开发者提供的工作号。如果提供的工作号已被使用,将产生一个错误。 5、Next_Date()过程用来显式地设定一个工作的执行时间。这个...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
"/u02/app/oracle/oradata/cams/control02.ctl", "/u02/app/oracle/oradata/cams/control03.ctl") 4 调度作业队列的 SNP 进程的数量以及 SNP 进程觉醒时间间隔 秒 JOB_QUEUE_PROCESSES=2 JOB_...
8.5.4 使用 tkprof 解释跟踪文件 8.5.5 使用 AUTOTRACE 获得 SQL 语句 执行计划和统计数据 8.6 优化回退段 8.6.1 最小化回退段争用 8.6.2 使动态扩充最小化 8.6.3 分布回退段的 I/O 8.7 优化索引 8.7.1 怎样...
说明:设置每页显示的行数目,默认是14,用法和linesize一样,至于其他环境参数的使用也是大同小异 sql>set pagesize 8 实际得到的不是14/8=2页 而是:14/(8-3)=5页 五Oracle用户的管理 4 1.创建用户 概述:在...
以下为说明解释部分: 2.分区改造主过程:AGGRE_PM_PARTITIONF.SQL, 意思是PARTITIONING THE FIRST TIME; 参数解释如下: -- @PARAM VARCHAR2 PARTTABLENAME---可以指定对某个表大小大于等于TABLEONSIZE_M(单位为MB)...
说明:Oracle中需要创建用户一定是要具有dba(数据库管理员)权限的用户才能创建,而且创建的新用户不具备任何权限,连登录都不可以。 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说明:...
6. 说明Oracle 10g数据库文本初始化参数文件与服务器初始化参数文件的区别。 答案: 文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件...
1.增加主键 alter table TABLE_NAME add constraint KEY_NAME primary key ... 说明:可以根据视图的text_length值设定set long 的大小 SQL>select text from user_views where view_name=upper(\'&view_name\'); ...
看NLS_CHARACTERSET的值为多少,如果为ZHS16GBK则说明改动成功。 如果执行正常,则按照下一节进行测试操作。 10.3 更改成功后的测试 测试1,在数据库服务器端下测试 %setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS...
在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块,不过有一点不同的是,触发器是隐式调用的,并不能接收参数。 触发器优点 (1)触发器能够实施的检查和操作比主键和外键约束、...
**项目说明** - 采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。 - 提供了代码生成器,只需编写30%左右...